Coverage Report - org.argouml.language.java.reveng.JavaParser
 
Classes in this File Line Coverage Branch Coverage Complexity
JavaParser
40%
2740/6698
17%
1356/7971
22.668
JavaParser$DFA107
14%
11/76
0%
0/44
22.668
JavaParser$DFA115
91%
11/12
N/A
22.668
JavaParser$DFA118
77%
28/36
46%
6/13
22.668
JavaParser$DFA124
5%
11/204
0%
0/118
22.668
JavaParser$DFA127
19%
21/108
5%
3/58
22.668
JavaParser$DFA137
91%
11/12
N/A
22.668
JavaParser$DFA139
30%
11/36
0%
0/13
22.668
JavaParser$DFA82
6%
22/332
1%
3/198
22.668
JavaParser$annotationName_return
0%
0/1
N/A
22.668
JavaParser$block_return
100%
1/1
N/A
22.668
JavaParser$constructorBody_return
100%
1/1
N/A
22.668
JavaParser$createdName_return
100%
1/1
N/A
22.668
JavaParser$equalsVariableInitializer_return
100%
1/1
N/A
22.668
JavaParser$primitiveType_return
100%
1/1
N/A
22.668
JavaParser$qualifiedName_return
100%
1/1
N/A
22.668
JavaParser$typeArguments_return
0%
0/1
N/A
22.668
JavaParser$variableDeclaratorId_return
100%
1/1
N/A
22.668
 
 1  
 // $ANTLR 3.5.2 org/argouml/language/java/reveng/Java.g 2020-01-05 15:54:32
 2  
 
 3  
 package org.argouml.language.java.reveng;
 4  
 
 5  
 
 6  
 import org.antlr.runtime.*;
 7  
 import java.util.Stack;
 8  
 import java.util.List;
 9  
 import java.util.ArrayList;
 10  
 import java.util.Map;
 11  
 import java.util.HashMap;
 12  
 
 13  
 /**
 14  
  * This is the Java 1.5 grammar for reverse engineering Java source code
 15  
  * to a UML model.
 16  
  * 
 17  
  * <p>It is generated by the ANTLR V.3 parser generator (www.antlr.org).
 18  
  *    Antlr uses the Java.g grammar file to generate the JavaParser.java
 19  
  *    parser.
 20  
  * 
 21  
  * <p><strong>DO NOT MODIFY JavaParser.java</strong>
 22  
  * 
 23  
  * <p>If you need to modify how Argo parses Java files then:
 24  
  * <ol>
 25  
  *     <li>modify <strong>Java.g</strong>. See the antlr website
 26  
  *         for examples of how to modify a antlr grammar file</li>
 27  
  *     <li>save Java.g and run argo's build script with the 
 28  
  *         "<strong>generateparser</strong>" target.</li>
 29  
  *     <li>build argo again.</li>
 30  
  * </ol>
 31  
  * 
 32  
  * <pre>
 33  
  * --------- original notes: -------------------------------------------
 34  
  *
 35  
  *  This is a very close representation of the spec; the changes
 36  
  *  are comestic (remove left recursion) and also fixes (the spec
 37  
  *  isn't exactly perfect).  I have run this on the 1.4.2 source
 38  
  *  and some nasty looking enums from 1.5, but have not really
 39  
  *  tested for 1.5 compatibility.
 40  
  *
 41  
  *  I built this with: java -Xmx100M org.antlr.Tool java.g 
 42  
  *  and got two errors that are ok (for now):
 43  
  *  java.g:691:9: Decision can match input such as
 44  
  *    "'0'..'9'{'E', 'e'}{'+', '-'}'0'..'9'{'D', 'F', 'd', 'f'}"
 45  
  *    using multiple alternatives: 3, 4
 46  
  *  As a result, alternative(s) 4 were disabled for that input
 47  
  *  java.g:734:35: Decision can match input such as "{'$', 'A'..'Z',
 48  
  *    '_', 'a'..'z', '\u00C0'..'\u00D6', '\u00D8'..'\u00F6',
 49  
  *    '\u00F8'..'\u1FFF', '\u3040'..'\u318F', '\u3300'..'\u337F',
 50  
  *    '\u3400'..'\u3D2D', '\u4E00'..'\u9FFF', '\uF900'..'\uFAFF'}"
 51  
  *    using multiple alternatives: 1, 2
 52  
  *  As a result, alternative(s) 2 were disabled for that input
 53  
  *
 54  
  *  You can turn enum on/off as a keyword :)
 55  
  *
 56  
  *  Version 1.0 -- initial release July 5, 2006 (requires 3.0b2 or higher)
 57  
  *
 58  
  *  Primary author: Terence Parr, July 2006
 59  
  *
 60  
  *  Version 1.0.1 -- corrections by Koen Vanderkimpen & Marko van Dooren,
 61  
  *      October 25, 2006;
 62  
  *      fixed normalInterfaceDeclaration: now uses typeParameters instead
 63  
  *          of typeParameter (according to JLS, 3rd edition)
 64  
  *      fixed castExpression: no longer allows expression next to type
 65  
  *          (according to semantics in JLS, in contrast with syntax in JLS)
 66  
  *
 67  
  *  Version 1.0.2 -- Terence Parr, Nov 27, 2006
 68  
  *      java spec I built this from had some bizarre for-loop control.
 69  
  *          Looked weird and so I looked elsewhere...Yep, it's messed up.
 70  
  *          simplified.
 71  
  *
 72  
  *  Version 1.0.3 -- Chris Hogue, Feb 26, 2007
 73  
  *      Factored out an annotationName rule and used it in the annotation rule.
 74  
  *          Not sure why, but typeName wasn't recognizing references to inner
 75  
  *          annotations (e.g. @InterfaceName.InnerAnnotation())
 76  
  *      Factored out the elementValue section of an annotation reference.  Created 
 77  
  *          elementValuePair and elementValuePairs rules, then used them in the 
 78  
  *          annotation rule.  Allows it to recognize annotation references with 
 79  
  *          multiple, comma separated attributes.
 80  
  *      Updated elementValueArrayInitializer so that it allows multiple elements.
 81  
  *          (It was only allowing 0 or 1 element).
 82  
  *      Updated localVariableDeclaration to allow annotations.  Interestingly the JLS
 83  
  *          doesn't appear to indicate this is legal, but it does work as of at least
 84  
  *          JDK 1.5.0_06.
 85  
  *      Moved the Identifier portion of annotationTypeElementRest to annotationMethodRest.
 86  
  *          Because annotationConstantRest already references variableDeclarator which 
 87  
  *          has the Identifier portion in it, the parser would fail on constants in 
 88  
  *          annotation definitions because it expected two identifiers.  
 89  
  *      Added optional trailing ';' to the alternatives in annotationTypeElementRest.
 90  
  *          Wouldn't handle an inner interface that has a trailing ';'.
 91  
  *      Swapped the expression and type rule reference order in castExpression to 
 92  
  *          make it check for genericized casts first.  It was failing to recognize a
 93  
  *          statement like  "Class<Byte> TYPE = (Class<Byte>)...;" because it was seeing
 94  
  *          'Class<Byte' in the cast expression as a less than expression, then failing 
 95  
  *          on the '>'.
 96  
  *      Changed createdName to use typeArguments instead of nonWildcardTypeArguments.
 97  
  *          Again, JLS doesn't seem to allow this, but java.lang.Class has an example of
 98  
  *          of this construct.
 99  
  *      Changed the 'this' alternative in primary to allow 'identifierSuffix' rather than
 100  
  *          just 'arguments'.  The case it couldn't handle was a call to an explicit
 101  
  *          generic method invocation (e.g. this.<E>doSomething()).  Using identifierSuffix
 102  
  *          may be overly aggressive--perhaps should create a more constrained thisSuffix rule?
 103  
  *      
 104  
  *  Version 1.0.4 -- Hiroaki Nakamura, May 3, 2007
 105  
  *
 106  
  *  Fixed formalParameterDecls, localVariableDeclaration, forInit,
 107  
  *  and forVarControl to use variableModifier* not 'final'? (annotation)?
 108  
  *
 109  
  *  Version 1.0.5 -- Terence, June 21, 2007
 110  
  *  --a[i].foo didn't work. Fixed unaryExpression
 111  
  *
 112  
  *  Version 1.0.6 -- John Ridgway, March 17, 2008
 113  
  *      Made "assert" a switchable keyword like "enum".
 114  
  *      Fixed compilationUnit to disallow "annotation importDeclaration ...".
 115  
  *      Changed "Identifier ('.' Identifier)*" to "qualifiedName" in more 
 116  
  *          places.
 117  
  *      Changed modifier* and/or variableModifier* to classOrInterfaceModifiers,
 118  
  *          modifiers or variableModifiers, as appropriate.
 119  
  *      Renamed "bound" to "typeBound" to better match language in the JLS.
 120  
  *      Added "memberDeclaration" which rewrites to methodDeclaration or 
 121  
  *      fieldDeclaration and pulled type into memberDeclaration.  So we parse 
 122  
  *          type and then move on to decide whether we're dealing with a field
 123  
  *          or a method.
 124  
  *      Modified "constructorDeclaration" to use "constructorBody" instead of
 125  
  *          "methodBody".  constructorBody starts with explicitConstructorInvocation,
 126  
  *          then goes on to blockStatement*.  Pulling explicitConstructorInvocation
 127  
  *          out of expressions allowed me to simplify "primary".
 128  
  *      Changed variableDeclarator to simplify it.
 129  
  *      Changed type to use classOrInterfaceType, thus simplifying it; of course
 130  
  *          I then had to add classOrInterfaceType, but it is used in several 
 131  
  *          places.
 132  
  *      Fixed annotations, old version allowed "@X(y,z)", which is illegal.
 133  
  *      Added optional comma to end of "elementValueArrayInitializer"; as per JLS.
 134  
  *      Changed annotationTypeElementRest to use normalClassDeclaration and 
 135  
  *          normalInterfaceDeclaration rather than classDeclaration and 
 136  
  *          interfaceDeclaration, thus getting rid of a couple of grammar ambiguities.
 137  
  *      Split localVariableDeclaration into localVariableDeclarationStatement
 138  
  *          (includes the terminating semi-colon) and localVariableDeclaration.  
 139  
  *          This allowed me to use localVariableDeclaration in "forInit" clauses,
 140  
  *           simplifying them.
 141  
  *      Changed switchBlockStatementGroup to use multiple labels.  This adds an
 142  
  *          ambiguity, but if one uses appropriately greedy parsing it yields the
 143  
  *           parse that is closest to the meaning of the switch statement.
 144  
  *      Renamed "forVarControl" to "enhancedForControl" -- JLS language.
 145  
  *      Added semantic predicates to test for shift operations rather than other
 146  
  *          things.  Thus, for instance, the string "< <" will never be treated
 147  
  *          as a left-shift operator.
 148  
  *      In "creator" we rule out "nonWildcardTypeArguments" on arrayCreation, 
 149  
  *          which are illegal.
 150  
  *      Moved "nonWildcardTypeArguments into innerCreator.
 151  
  *      Removed 'super' superSuffix from explicitGenericInvocation, since that
 152  
  *          is only used in explicitConstructorInvocation at the beginning of a
 153  
  *           constructorBody.  (This is part of the simplification of expressions
 154  
  *           mentioned earlier.)
 155  
  *      Simplified primary (got rid of those things that are only used in
 156  
  *          explicitConstructorInvocation).
 157  
  *      Lexer -- removed "Exponent?" from FloatingPointLiteral choice 4, since it
 158  
  *          led to an ambiguity.
 159  
  *
 160  
  *      This grammar successfully parses every .java file in the JDK 1.5 source 
 161  
  *          tree (excluding those whose file names include '-', which are not
 162  
  *          valid Java compilation units).
 163  
  *
 164  
  *  Known remaining problems:
 165  
  *      "Letter" and "JavaIDDigit" are wrong.  The actual specification of
 166  
  *      "Letter" should be "a character for which the method
 167  
  *      Character.isJavaIdentifierStart(int) returns true."  A "Java 
 168  
  *      letter-or-digit is a character for which the method 
 169  
  *      Character.isJavaIdentifierPart(int) returns true."
 170  
  * 
 171  
  * --------- further ArgoUML notes: -----------------------------------
 172  
  *
 173  
  * Modified by Thomas Neustupny (April 18, 2008)
 174  
  *    o Added a lot of stuff for the UML Modeler from the former Antlr 2 grammar
 175  
  *    o Not passing typeArguments and typeParameters to the Modeler (don't how they map to UML)
 176  
  *    o from Tom Morris, who did this in the former Antlr 2 grammar:
 177  
  *      Added support to pass variableLengthParameterDeclaration to Modeler
 178  
  *    o from Tom Morris, who did this in the former Antlr 2 grammar:
 179  
  *      Added stubs for typeParameters, typeArguments, annotations and
 180  
  *      annotationDefinitions and so we can warn when they're skipped.
 181  
  *
 182  
  * This grammar is in the PUBLIC DOMAIN
 183  
  * </pre>
 184  
  */
 185  
 @SuppressWarnings("all")
 186  0
 public class JavaParser extends Parser {
 187  1
         public static final String[] tokenNames = new String[] {
 188  
                 "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ASSERT", "COMMENT", "CharacterLiteral", 
 189  
                 "DecimalLiteral", "EMPTY_COMMENT", "ENUM", "EscapeSequence", "Exponent", 
 190  
                 "FloatTypeSuffix", "FloatingPointLiteral", "HexDigit", "HexLiteral", "Identifier", 
 191  
                 "IntegerTypeSuffix", "JAVADOC", "JavaIDDigit", "LINE_COMMENT", "Letter", 
 192  
                 "OctalEscape", "OctalLiteral", "StringLiteral", "UnicodeEscape", "WS", 
 193  
                 "'!'", "'!='", "'%'", "'%='", "'&&'", "'&'", "'&='", "'('", "')'", "'*'", 
 194  
                 "'*='", "'+'", "'++'", "'+='", "','", "'-'", "'--'", "'-='", "'.'", "'...'", 
 195  
                 "'/'", "'/='", "':'", "';'", "'<'", "'='", "'=='", "'>'", "'?'", "'@'", 
 196  
                 "'['", "']'", "'^'", "'^='", "'abstract'", "'boolean'", "'break'", "'byte'", 
 197  
                 "'case'", "'catch'", "'char'", "'class'", "'continue'", "'default'", "'do'", 
 198  
                 "'double'", "'else'", "'extends'", "'false'", "'final'", "'finally'", 
 199  
                 "'float'", "'for'", "'if'", "'implements'", "'import'", "'instanceof'", 
 200  
                 "'int'", "'interface'", "'long'", "'native'", "'new'", "'null'", "'package'", 
 201  
                 "'private'", "'protected'", "'public'", "'return'", "'short'", "'static'", 
 202  
                 "'strictfp'", "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", 
 203  
                 "'throws'", "'transient'", "'true'", "'try'", "'void'", "'volatile'", 
 204  
                 "'while'", "'{'", "'|'", "'|='", "'||'", "'}'", "'~'"
 205  
         };
 206  
         public static final int EOF=-1;
 207  
         public static final int T__27=27;
 208  
         public static final int T__28=28;
 209  
         public static final int T__29=29;
 210  
         public static final int T__30=30;
 211  
         public static final int T__31=31;
 212  
         public static final int T__32=32;
 213  
         public static final int T__33=33;
 214  
         public static final int T__34=34;
 215  
         public static final int T__35=35;
 216  
         public static final int T__36=36;
 217  
         public static final int T__37=37;
 218  
         public static final int T__38=38;
 219  
         public static final int T__39=39;
 220  
         public static final int T__40=40;
 221  
         public static final int T__41=41;
 222  
         public static final int T__42=42;
 223  
         public static final int T__43=43;
 224  
         public static final int T__44=44;
 225  
         public static final int T__45=45;
 226  
         public static final int T__46=46;
 227  
         public static final int T__47=47;
 228  
         public static final int T__48=48;
 229  
         public static final int T__49=49;
 230  
         public static final int T__50=50;
 231  
         public static final int T__51=51;
 232  
         public static final int T__52=52;
 233  
         public static final int T__53=53;
 234  
         public static final int T__54=54;
 235  
         public static final int T__55=55;
 236  
         public static final int T__56=56;
 237  
         public static final int T__57=57;
 238  
         public static final int T__58=58;
 239  
         public static final int T__59=59;
 240  
         public static final int T__60=60;
 241  
         public static final int T__61=61;
 242  
         public static final int T__62=62;
 243  
         public static final int T__63=63;
 244  
         public static final int T__64=64;
 245  
         public static final int T__65=65;
 246  
         public static final int T__66=66;
 247  
         public static final int T__67=67;
 248  
         public static final int T__68=68;
 249  
         public static final int T__69=69;
 250  
         public static final int T__70=70;
 251  
         public static final int T__71=71;
 252  
         public static final int T__72=72;
 253  
         public static final int T__73=73;
 254  
         public static final int T__74=74;
 255  
         public static final int T__75=75;
 256  
         public static final int T__76=76;
 257  
         public static final int T__77=77;
 258  
         public static final int T__78=78;
 259  
         public static final int T__79=79;
 260  
         public static final int T__80=80;
 261  
         public static final int T__81=81;
 262  
         public static final int T__82=82;
 263  
         public static final int T__83=83;
 264  
         public static final int T__84=84;
 265  
         public static final int T__85=85;
 266  
         public static final int T__86=86;
 267  
         public static final int T__87=87;
 268  
         public static final int T__88=88;
 269  
         public static final int T__89=89;
 270  
         public static final int T__90=90;
 271  
         public static final int T__91=91;
 272  
         public static final int T__92=92;
 273  
         public static final int T__93=93;
 274  
         public static final int T__94=94;
 275  
         public static final int T__95=95;
 276  
         public static final int T__96=96;
 277  
         public static final int T__97=97;
 278  
         public static final int T__98=98;
 279  
         public static final int T__99=99;
 280  
         public static final int T__100=100;
 281  
         public static final int T__101=101;
 282  
         public static final int T__102=102;
 283  
         public static final int T__103=103;
 284  
         public static final int T__104=104;
 285  
         public static final int T__105=105;
 286  
         public static final int T__106=106;
 287  
         public static final int T__107=107;
 288  
         public static final int T__108=108;
 289  
         public static final int T__109=109;
 290  
         public static final int T__110=110;
 291  
         public static final int T__111=111;
 292  
         public static final int T__112=112;
 293  
         public static final int T__113=113;
 294  
         public static final int T__114=114;
 295  
         public static final int T__115=115;
 296  
         public static final int ASSERT=4;
 297  
         public static final int COMMENT=5;
 298  
         public static final int CharacterLiteral=6;
 299  
         public static final int DecimalLiteral=7;
 300  
         public static final int EMPTY_COMMENT=8;
 301  
         public static final int ENUM=9;
 302  
         public static final int EscapeSequence=10;
 303  
         public static final int Exponent=11;
 304  
         public static final int FloatTypeSuffix=12;
 305  
         public static final int FloatingPointLiteral=13;
 306  
         public static final int HexDigit=14;
 307  
         public static final int HexLiteral=15;
 308  
         public static final int Identifier=16;
 309  
         public static final int IntegerTypeSuffix=17;
 310  
         public static final int JAVADOC=18;
 311  
         public static final int JavaIDDigit=19;
 312  
         public static final int LINE_COMMENT=20;
 313  
         public static final int Letter=21;
 314  
         public static final int OctalEscape=22;
 315  
         public static final int OctalLiteral=23;
 316  
         public static final int StringLiteral=24;
 317  
         public static final int UnicodeEscape=25;
 318  
         public static final int WS=26;
 319  
 
 320  
         // delegates
 321  
         public Parser[] getDelegates() {
 322  0
                 return new Parser[] {};
 323  
         }
 324  
 
 325  
         // delegators
 326  
 
 327  
 
 328  
         public JavaParser(TokenStream input) {
 329  18
                 this(input, new RecognizerSharedState());
 330  18
         }
 331  
         public JavaParser(TokenStream input, RecognizerSharedState state) {
 332  18
                 super(input, state);
 333  18
                 this.state.ruleMemo = new HashMap[409+1];
 334  
 
 335  
 
 336  18
         }
 337  
 
 338  0
         @Override public String[] getTokenNames() { return JavaParser.tokenNames; }
 339  0
         @Override public String getGrammarFileName() { return "org/argouml/language/java/reveng/Java.g"; }
 340  
 
 341  
 
 342  
             /**
 343  
              * Counts the number of LT seen in the typeArguments production.
 344  
              * It is used in semantic predicates to ensure we have seen
 345  
              * enough closing '>' characters; which actually may have been
 346  
              * either GT, SR or BSR tokens.
 347  
              */
 348  18
             private int ltCounter = 0;
 349  
 
 350  
             // Constants for access modifiers according to the JVM specs chapter 4
 351  
             public static final short ACC_PUBLIC    = 0x0001;
 352  
             public static final short ACC_PRIVATE   = 0x0002;
 353  
             public static final short ACC_PROTECTED = 0x0004;
 354  
             public static final short ACC_STATIC    = 0x0008;
 355  
             public static final short ACC_FINAL     = 0x0010;
 356  
             public static final short ACC_SUPER     = 0x0020;
 357  
             public static final short ACC_VOLATILE  = 0x0040;
 358  
             public static final short ACC_TRANSIENT = 0x0080;
 359  
             public static final short ACC_NATIVE    = 0x0100;
 360  
             public static final short ACC_INTERFACE = 0x0200;
 361  
             public static final short ACC_ABSTRACT  = 0x0400;                     
 362  
 
 363  
             /** Parser mode for the first pass of the import from sources */
 364  
             public static final int MODE_IMPORT_PASS1 = 1;
 365  
             /** Parser mode for the second pass of the import from sources */
 366  
             public static final int MODE_IMPORT_PASS2 = 2;
 367  
             /** Parser mode for the source code generation in update mode */
 368  
             public static final int MODE_GENERATION_UPDATE = 4;
 369  
             /** Parser mode for the reverse engineering of a sequence diagram */
 370  
             public static final int MODE_REVENG_SEQUENCE = 8;
 371  
 
 372  
             /** The parser mode, that controls which semantic expressions will be active */
 373  18
             private int parserMode = 0;
 374  
 
 375  
             /** The name of the variable to which a created object (new...) is assigned to */
 376  18
             private String createdObjectVarName = null;
 377  
            
 378  
             /** Import details level */
 379  18
             private int level = 2;
 380  
 
 381  
             /** Set the parser mode, to control which semantic expressions will be active */
 382  
             public void setParserMode(int mode) {
 383  0
                 parserMode = mode;
 384  0
             }
 385  
             
 386  
             // This one is not(!) in the JVM specs, but required
 387  
             public static final short ACC_SYNCHRONIZED  = 0x0020;
 388  
 
 389  
             /**
 390  
              * To get direct access to the lexer (for the javadoc
 391  
              * comments), we store a reference to it.
 392  
              */
 393  18
             private JavaLexer _lexer = null;
 394  
 
 395  
             /**
 396  
              * A buffer to hold the last parsed javadoc comment.
 397  
              */
 398  18
             String _javadocComment = null;
 399  
 
 400  
             /**
 401  
              * Return (and consume) the last available Javadoc Comment.
 402  
              *
 403  
              * @return The last parsed javadoc comment.
 404  
              */
 405  
             protected String getJavadocComment() {
 406  107
                 String result = _javadocComment;
 407  107
                 _javadocComment = null;  // Since we consume the comment, the buffer is reset.
 408  107
                 return result;
 409  
             }
 410  
 
 411  
             /**
 412  
              * Updates the last parsed javadoc comment.
 413  
              */
 414  
             private void updateJavadocComment() {
 415  107
                 int i = input.index();
 416  107
                 if (i == 0) {
 417  0
                     return;
 418  
                 }
 419  107
                 Token t = (Token)input.get(--i);
 420  600
                 while (i > 0 && t.getType()== _lexer.WS) {
 421  493
                     t = (Token)input.get(--i);
 422  
                 }
 423  107
                 if (t.getType() == _lexer.JAVADOC) {
 424  27
                     _javadocComment = t.getText();
 425  
                 }
 426  107
             }
 427  
             
 428  
             private Modeller _modeller;
 429  
 
 430  
             public Modeller getModeller() {
 431  237
                 return _modeller;
 432  
             }
 433  
 
 434  
             public void setModeller(Modeller modeller) {
 435  18
                 _modeller = modeller;
 436  18
                 Object lvl = modeller.getAttribute("level");
 437  18
                 if (lvl != null) {
 438  0
                   level = ((Integer)lvl).intValue();
 439  
                 }
 440  18
             }
 441  
             
 442  
                 // A reference to the last added Operation (here: method)
 443  18
                 private Object _currentMethod = null;
 444  
 
 445  
             /**
 446  
              * get reference to the last added Operation (here: method)
 447  
              */
 448  
             Object getMethod() {
 449  44
                 return _currentMethod;
 450  
             }
 451  
 
 452  
             /**
 453  
              * set reference to the last added Operation (here: method)
 454  
              */
 455  
             void setMethod(Object method) {
 456  104
                 _currentMethod = method;
 457  104
             }
 458  
 
 459  
             // A method body
 460  18
             private String _methodBody = null;
 461  
 
 462  
             /**
 463  
              * get last method body
 464  
              */
 465  
             String getBody() {
 466  44
                 return _methodBody;
 467  
             }
 468  
 
 469  
             /**
 470  
              * set last method body
 471  
              */
 472  
             void setBody(String body) {
 473  81
                 _methodBody = body;
 474  81
             }
 475  
 
 476  
             // A flag to indicate if we are inside a compoundStatement
 477  18
             private boolean      _inCompoundStatement  = false;    
 478  
 
 479  
             /**
 480  
              * set if we are inside a compoundStatement
 481  
              */
 482  
             void setIsInCompoundStatement(boolean flag) {
 483  74
                 _inCompoundStatement = flag;
 484  74
             }
 485  
 
 486  
             /**
 487  
              * check if we are inside a compoundStatement
 488  
              */
 489  
             boolean isInCompoundStatement() {
 490  154
                 return _inCompoundStatement;
 491  
             }
 492  
 
 493  
             /**
 494  
              * Add a call that appears after a dot. This is needed for the RE of
 495  
              * sequence diagrams and is currently not used. Should be called in the
 496  
              * identifierSuffix rule.
 497  
              */
 498  
             private void addDotCall(String id, String thisOrSuper, boolean parenths) {
 499  0
                 StringBuffer sb = new StringBuffer();
 500  0
                 List<String> calls = getModeller().getMethodCalls();
 501  0
                 String prev = calls.get(calls.size() - 1);
 502  0
                 if (thisOrSuper != null) {
 503  0
                     sb.append(thisOrSuper);
 504  0
                 } else if (prev != null) {
 505  0
                     if (parenths) {
 506  0
                         sb.append('(');
 507  
                     }
 508  0
                     sb.append(prev).append("()");
 509  0
                     if (parenths) {
 510  0
                         sb.append(')');
 511  
                     }
 512  0
                     sb.append('.');
 513  
                 }
 514  0
                 sb.append(id);
 515  0
                 getModeller().addCall(sb.toString());
 516  0
             }
 517  
 
 518  
 
 519  
 
 520  
         // $ANTLR start "compilationUnit"
 521  
         // org/argouml/language/java/reveng/Java.g:425:1: compilationUnit[Modeller modeller, JavaLexer lexer] : ( ( '@' )=> annotations ( packageDeclaration ( importDeclaration )* ( typeDeclaration )* | classOrInterfaceDeclaration ( typeDeclaration )* ) | ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* );
 522  
         public final void compilationUnit(Modeller modeller, JavaLexer lexer) throws RecognitionException {
 523  18
                 int compilationUnit_StartIndex = input.index();
 524  
 
 525  
 
 526  18
                         setModeller(modeller);
 527  18
                         _lexer = lexer;
 528  18
                         if (state.backtracking == 0) {
 529  18
                             getModeller().addComponent();
 530  
                         }
 531  
                     
 532  
                 try {
 533  18
                         if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return; }
 534  
 
 535  
                         // org/argouml/language/java/reveng/Java.g:433:5: ( ( '@' )=> annotations ( packageDeclaration ( importDeclaration )* ( typeDeclaration )* | classOrInterfaceDeclaration ( typeDeclaration )* ) | ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )* )
 536  18
                         int alt8=2;
 537  18
                         int LA8_0 = input.LA(1);
 538  18
                         if ( (LA8_0==56) ) {
 539  0
                                 int LA8_1 = input.LA(2);
 540  0
                                 if ( (LA8_1==85) ) {
 541  0
                                         alt8=2;
 542  
                                 }
 543  0
                                 else if ( (LA8_1==Identifier) ) {
 544  0
                                         int LA8_17 = input.LA(3);
 545  0
                                         if ( (synpred1_Java()) ) {
 546  0
                                                 alt8=1;
 547  
                                         }
 548  
                                         else if ( (true) ) {
 549  0
                                                 alt8=2;
 550  
                                         }
 551  
 
 552  0
                                 }
 553  
 
 554  
                                 else {
 555  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 556  0
                                         int nvaeMark = input.mark();
 557  
                                         try {
 558  0
                                                 input.consume();
 559  0
                                                 NoViableAltException nvae =
 560  
                                                         new NoViableAltException("", 8, 1, input);
 561  0
                                                 throw nvae;
 562  
                                         } finally {
 563  0
                                                 input.rewind(nvaeMark);
 564  0
                                         }
 565  
                                 }
 566  
 
 567  0
                         }
 568  18
                         else if ( (LA8_0==EOF||LA8_0==ENUM||LA8_0==50||LA8_0==61||LA8_0==68||LA8_0==76||LA8_0==82||LA8_0==85||(LA8_0 >= 90 && LA8_0 <= 93)||(LA8_0 >= 96 && LA8_0 <= 97)) ) {
 569  18
                                 alt8=2;
 570  
                         }
 571  
 
 572  
                         else {
 573  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 574  0
                                 NoViableAltException nvae =
 575  
                                         new NoViableAltException("", 8, 0, input);
 576  0
                                 throw nvae;
 577  
                         }
 578  
 
 579  18
                         switch (alt8) {
 580  
                                 case 1 :
 581  
                                         // org/argouml/language/java/reveng/Java.g:433:9: ( '@' )=> annotations ( packageDeclaration ( importDeclaration )* ( typeDeclaration )* | classOrInterfaceDeclaration ( typeDeclaration )* )
 582  
                                         {
 583  0
                                         pushFollow(FOLLOW_annotations_in_compilationUnit112);
 584  0
                                         annotations();
 585  0
                                         state._fsp--;
 586  0
                                         if (state.failed) return;
 587  
                                         // org/argouml/language/java/reveng/Java.g:434:9: ( packageDeclaration ( importDeclaration )* ( typeDeclaration )* | classOrInterfaceDeclaration ( typeDeclaration )* )
 588  0
                                         int alt4=2;
 589  0
                                         int LA4_0 = input.LA(1);
 590  0
                                         if ( (LA4_0==90) ) {
 591  0
                                                 alt4=1;
 592  
                                         }
 593  0
                                         else if ( (LA4_0==ENUM||LA4_0==56||LA4_0==61||LA4_0==68||LA4_0==76||LA4_0==85||(LA4_0 >= 91 && LA4_0 <= 93)||(LA4_0 >= 96 && LA4_0 <= 97)) ) {
 594  0
                                                 alt4=2;
 595  
                                         }
 596  
 
 597  
                                         else {
 598  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 599  0
                                                 NoViableAltException nvae =
 600  
                                                         new NoViableAltException("", 4, 0, input);
 601  0
                                                 throw nvae;
 602  
                                         }
 603  
 
 604  0
                                         switch (alt4) {
 605  
                                                 case 1 :
 606  
                                                         // org/argouml/language/java/reveng/Java.g:434:13: packageDeclaration ( importDeclaration )* ( typeDeclaration )*
 607  
                                                         {
 608  0
                                                         pushFollow(FOLLOW_packageDeclaration_in_compilationUnit126);
 609  0
                                                         packageDeclaration();
 610  0
                                                         state._fsp--;
 611  0
                                                         if (state.failed) return;
 612  
                                                         // org/argouml/language/java/reveng/Java.g:434:32: ( importDeclaration )*
 613  
                                                         loop1:
 614  
                                                         while (true) {
 615  0
                                                                 int alt1=2;
 616  0
                                                                 int LA1_0 = input.LA(1);
 617  0
                                                                 if ( (LA1_0==82) ) {
 618  0
                                                                         alt1=1;
 619  
                                                                 }
 620  
 
 621  0
                                                                 switch (alt1) {
 622  
                                                                 case 1 :
 623  
                                                                         // org/argouml/language/java/reveng/Java.g:434:32: importDeclaration
 624  
                                                                         {
 625  0
                                                                         pushFollow(FOLLOW_importDeclaration_in_compilationUnit128);
 626  0
                                                                         importDeclaration();
 627  0
                                                                         state._fsp--;
 628  0
                                                                         if (state.failed) return;
 629  
                                                                         }
 630  
                                                                         break;
 631  
 
 632  
                                                                 default :
 633  0
                                                                         break loop1;
 634  
                                                                 }
 635  0
                                                         }
 636  
 
 637  
                                                         // org/argouml/language/java/reveng/Java.g:434:51: ( typeDeclaration )*
 638  
                                                         loop2:
 639  
                                                         while (true) {
 640  0
                                                                 int alt2=2;
 641  0
                                                                 int LA2_0 = input.LA(1);
 642  0
                                                                 if ( (LA2_0==ENUM||LA2_0==50||LA2_0==56||LA2_0==61||LA2_0==68||LA2_0==76||LA2_0==85||(LA2_0 >= 91 && LA2_0 <= 93)||(LA2_0 >= 96 && LA2_0 <= 97)) ) {
 643  0
                                                                         alt2=1;
 644  
                                                                 }
 645  
 
 646  0
                                                                 switch (alt2) {
 647  
                                                                 case 1 :
 648  
                                                                         // org/argouml/language/java/reveng/Java.g:434:51: typeDeclaration
 649  
                                                                         {
 650  0
                                                                         pushFollow(FOLLOW_typeDeclaration_in_compilationUnit131);
 651  0
                                                                         typeDeclaration();
 652  0
                                                                         state._fsp--;
 653  0
                                                                         if (state.failed) return;
 654  
                                                                         }
 655  
                                                                         break;
 656  
 
 657  
                                                                 default :
 658  0
                                                                         break loop2;
 659  
                                                                 }
 660  0
                                                         }
 661  
 
 662  
                                                         }
 663  
                                                         break;
 664  
                                                 case 2 :
 665  
                                                         // org/argouml/language/java/reveng/Java.g:435:13: classOrInterfaceDeclaration ( typeDeclaration )*
 666  
                                                         {
 667  0
                                                         pushFollow(FOLLOW_classOrInterfaceDeclaration_in_compilationUnit146);
 668  0
                                                         classOrInterfaceDeclaration();
 669  0
                                                         state._fsp--;
 670  0
                                                         if (state.failed) return;
 671  
                                                         // org/argouml/language/java/reveng/Java.g:435:41: ( typeDeclaration )*
 672  
                                                         loop3:
 673  
                                                         while (true) {
 674  0
                                                                 int alt3=2;
 675  0
                                                                 int LA3_0 = input.LA(1);
 676  0
                                                                 if ( (LA3_0==ENUM||LA3_0==50||LA3_0==56||LA3_0==61||LA3_0==68||LA3_0==76||LA3_0==85||(LA3_0 >= 91 && LA3_0 <= 93)||(LA3_0 >= 96 && LA3_0 <= 97)) ) {
 677  0
                                                                         alt3=1;
 678  
                                                                 }
 679  
 
 680  0
                                                                 switch (alt3) {
 681  
                                                                 case 1 :
 682  
                                                                         // org/argouml/language/java/reveng/Java.g:435:41: typeDeclaration
 683  
                                                                         {
 684  0
                                                                         pushFollow(FOLLOW_typeDeclaration_in_compilationUnit148);
 685  0
                                                                         typeDeclaration();
 686  0
                                                                         state._fsp--;
 687  0
                                                                         if (state.failed) return;
 688  
                                                                         }
 689  
                                                                         break;
 690  
 
 691  
                                                                 default :
 692  0
                                                                         break loop3;
 693  
                                                                 }
 694  0
                                                         }
 695  
 
 696  
                                                         }
 697  
                                                         break;
 698  
 
 699  
                                         }
 700  
 
 701  
                                         }
 702  0
                                         break;
 703  
                                 case 2 :
 704  
                                         // org/argouml/language/java/reveng/Java.g:437:9: ( packageDeclaration )? ( importDeclaration )* ( typeDeclaration )*
 705  
                                         {
 706  
                                         // org/argouml/language/java/reveng/Java.g:437:9: ( packageDeclaration )?
 707  18
                                         int alt5=2;
 708  18
                                         int LA5_0 = input.LA(1);
 709  18
                                         if ( (LA5_0==90) ) {
 710  18
                                                 alt5=1;
 711  
                                         }
 712  18
                                         switch (alt5) {
 713  
                                                 case 1 :
 714  
                                                         // org/argouml/language/java/reveng/Java.g:437:10: packageDeclaration
 715  
                                                         {
 716  18
                                                         pushFollow(FOLLOW_packageDeclaration_in_compilationUnit169);
 717  18
                                                         packageDeclaration();
 718  18
                                                         state._fsp--;
 719  18
                                                         if (state.failed) return;
 720  
                                                         }
 721  
                                                         break;
 722  
 
 723  
                                         }
 724  
 
 725  
                                         // org/argouml/language/java/reveng/Java.g:437:31: ( importDeclaration )*
 726  
                                         loop6:
 727  
                                         while (true) {
 728  34
                                                 int alt6=2;
 729  34
                                                 int LA6_0 = input.LA(1);
 730  34
                                                 if ( (LA6_0==82) ) {
 731  16
                                                         alt6=1;
 732  
                                                 }
 733  
 
 734  34
                                                 switch (alt6) {
 735  
                                                 case 1 :
 736  
                                                         // org/argouml/language/java/reveng/Java.g:437:31: importDeclaration
 737  
                                                         {
 738  16
                                                         pushFollow(FOLLOW_importDeclaration_in_compilationUnit173);
 739  16
                                                         importDeclaration();
 740  16
                                                         state._fsp--;
 741  16
                                                         if (state.failed) return;
 742  
                                                         }
 743  
                                                         break;
 744  
 
 745  
                                                 default :
 746  18
                                                         break loop6;
 747  
                                                 }
 748  16
                                         }
 749  
 
 750  
                                         // org/argouml/language/java/reveng/Java.g:437:50: ( typeDeclaration )*
 751  
                                         loop7:
 752  
                                         while (true) {
 753  36
                                                 int alt7=2;
 754  36
                                                 int LA7_0 = input.LA(1);
 755  36
                                                 if ( (LA7_0==ENUM||LA7_0==50||LA7_0==56||LA7_0==61||LA7_0==68||LA7_0==76||LA7_0==85||(LA7_0 >= 91 && LA7_0 <= 93)||(LA7_0 >= 96 && LA7_0 <= 97)) ) {
 756  18
                                                         alt7=1;
 757  
                                                 }
 758  
 
 759  36
                                                 switch (alt7) {
 760  
                                                 case 1 :
 761  
                                                         // org/argouml/language/java/reveng/Java.g:437:50: typeDeclaration
 762  
                                                         {
 763  18
                                                         pushFollow(FOLLOW_typeDeclaration_in_compilationUnit176);
 764  18
                                                         typeDeclaration();
 765  18
                                                         state._fsp--;
 766  18
                                                         if (state.failed) return;
 767  
                                                         }
 768  
                                                         break;
 769  
 
 770  
                                                 default :
 771  18
                                                         break loop7;
 772  
                                                 }
 773  18
                                         }
 774  
 
 775  
                                         }
 776  
                                         break;
 777  
 
 778  
                         }
 779  
                 }
 780  0
                 catch (RecognitionException re) {
 781  0
                         reportError(re);
 782  0
                         recover(input,re);
 783  
                 }
 784  
                 finally {
 785  
                         // do for sure before leaving
 786  18
                         if ( state.backtracking>0 ) { memoize(input, 1, compilationUnit_StartIndex); }
 787  
 
 788  0
                 }
 789  18
         }
 790  
         // $ANTLR end "compilationUnit"
 791  
 
 792  
 
 793  
 
 794  
         // $ANTLR start "packageDeclaration"
 795  
         // org/argouml/language/java/reveng/Java.g:441:1: packageDeclaration : 'package' packageName= qualifiedName ';' ;
 796  
         public final void packageDeclaration() throws RecognitionException {
 797  18
                 int packageDeclaration_StartIndex = input.index();
 798  
 
 799  18
                 ParserRuleReturnScope packageName =null;
 800  
 
 801  
                 try {
 802  18
                         if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return; }
 803  
 
 804  
                         // org/argouml/language/java/reveng/Java.g:442:5: ( 'package' packageName= qualifiedName ';' )
 805  
                         // org/argouml/language/java/reveng/Java.g:442:9: 'package' packageName= qualifiedName ';'
 806  
                         {
 807  18
                         match(input,90,FOLLOW_90_in_packageDeclaration197); if (state.failed) return;
 808  18
                         pushFollow(FOLLOW_qualifiedName_in_packageDeclaration201);
 809  18
                         packageName=qualifiedName();
 810  18
                         state._fsp--;
 811  18
                         if (state.failed) return;
 812  18
                         match(input,50,FOLLOW_50_in_packageDeclaration203); if (state.failed) return;
 813  18
                         if ( state.backtracking==0 ) {
 814  18
                                     getModeller().addPackage((packageName!=null?input.toString(packageName.start,packageName.stop):null));
 815  
                                 }
 816  
                         }
 817  
 
 818  
                 }
 819  0
                 catch (RecognitionException re) {
 820  0
                         reportError(re);
 821  0
                         recover(input,re);
 822  
                 }
 823  
                 finally {
 824  
                         // do for sure before leaving
 825  18
                         if ( state.backtracking>0 ) { memoize(input, 2, packageDeclaration_StartIndex); }
 826  
 
 827  0
                 }
 828  18
         }
 829  
         // $ANTLR end "packageDeclaration"
 830  
 
 831  
 
 832  
 
 833  
         // $ANTLR start "importDeclaration"
 834  
         // org/argouml/language/java/reveng/Java.g:449:1: importDeclaration : 'import' ( 'static' )? importName= qualifiedName ( '.' '*' )? ';' ;
 835  
         public final void importDeclaration() throws RecognitionException {
 836  16
                 int importDeclaration_StartIndex = input.index();
 837  
 
 838  16
                 ParserRuleReturnScope importName =null;
 839  
 
 840  
 
 841  16
                         StringBuffer sb = new StringBuffer(80);
 842  
                     
 843  
                 try {
 844  16
                         if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return; }
 845  
 
 846  
                         // org/argouml/language/java/reveng/Java.g:453:5: ( 'import' ( 'static' )? importName= qualifiedName ( '.' '*' )? ';' )
 847  
                         // org/argouml/language/java/reveng/Java.g:453:9: 'import' ( 'static' )? importName= qualifiedName ( '.' '*' )? ';'
 848  
                         {
 849  16
                         match(input,82,FOLLOW_82_in_importDeclaration250); if (state.failed) return;
 850  
                         // org/argouml/language/java/reveng/Java.g:453:18: ( 'static' )?
 851  16
                         int alt9=2;
 852  16
                         int LA9_0 = input.LA(1);
 853  16
                         if ( (LA9_0==96) ) {
 854  0
                                 alt9=1;
 855  
                         }
 856  16
                         switch (alt9) {
 857  
                                 case 1 :
 858  
                                         // org/argouml/language/java/reveng/Java.g:453:18: 'static'
 859  
                                         {
 860  0
                                         match(input,96,FOLLOW_96_in_importDeclaration252); if (state.failed) return;
 861  
                                         }
 862  
                                         break;
 863  
 
 864  
                         }
 865  
 
 866  16
                         pushFollow(FOLLOW_qualifiedName_in_importDeclaration265);
 867  16
                         importName=qualifiedName();
 868  16
                         state._fsp--;
 869  16
                         if (state.failed) return;
 870  16
                         if ( state.backtracking==0 ) { sb.append((importName!=null?input.toString(importName.start,importName.stop):null)); }
 871  
                         // org/argouml/language/java/reveng/Java.g:455:9: ( '.' '*' )?
 872  16
                         int alt10=2;
 873  16
                         int LA10_0 = input.LA(1);
 874  16
                         if ( (LA10_0==45) ) {
 875  0
                                 alt10=1;
 876  
                         }
 877  16
                         switch (alt10) {
 878  
                                 case 1 :
 879  
                                         // org/argouml/language/java/reveng/Java.g:455:10: '.' '*'
 880  
                                         {
 881  0
                                         match(input,45,FOLLOW_45_in_importDeclaration278); if (state.failed) return;
 882  0
                                         match(input,36,FOLLOW_36_in_importDeclaration280); if (state.failed) return;
 883  0
                                         if ( state.backtracking==0 ) { sb.append(".*"); }
 884  
                                         }
 885  
                                         break;
 886  
 
 887  
                         }
 888  
 
 889  16
                         match(input,50,FOLLOW_50_in_importDeclaration287); if (state.failed) return;
 890  16
                         if ( state.backtracking==0 ) {
 891  16
                                     getModeller().addImport(sb.toString(),
 892  
                                         (parserMode == MODE_IMPORT_PASS2));
 893  
                                 }
 894  
                         }
 895  
 
 896  
                 }
 897  0
                 catch (RecognitionException re) {
 898  0
                         reportError(re);
 899  0
                         recover(input,re);
 900  
                 }
 901  
                 finally {
 902  
                         // do for sure before leaving
 903  16
                         if ( state.backtracking>0 ) { memoize(input, 3, importDeclaration_StartIndex); }
 904  
 
 905  0
                 }
 906  16
         }
 907  
         // $ANTLR end "importDeclaration"
 908  
 
 909  
 
 910  
 
 911  
         // $ANTLR start "typeDeclaration"
 912  
         // org/argouml/language/java/reveng/Java.g:463:1: typeDeclaration : ( classOrInterfaceDeclaration | ';' );
 913  
         public final void typeDeclaration() throws RecognitionException {
 914  18
                 int typeDeclaration_StartIndex = input.index();
 915  
 
 916  
                 try {
 917  18
                         if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return; }
 918  
 
 919  
                         // org/argouml/language/java/reveng/Java.g:464:5: ( classOrInterfaceDeclaration | ';' )
 920  18
                         int alt11=2;
 921  18
                         int LA11_0 = input.LA(1);
 922  18
                         if ( (LA11_0==ENUM||LA11_0==56||LA11_0==61||LA11_0==68||LA11_0==76||LA11_0==85||(LA11_0 >= 91 && LA11_0 <= 93)||(LA11_0 >= 96 && LA11_0 <= 97)) ) {
 923  18
                                 alt11=1;
 924  
                         }
 925  0
                         else if ( (LA11_0==50) ) {
 926  0
                                 alt11=2;
 927  
                         }
 928  
 
 929  
                         else {
 930  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 931  0
                                 NoViableAltException nvae =
 932  
                                         new NoViableAltException("", 11, 0, input);
 933  0
                                 throw nvae;
 934  
                         }
 935  
 
 936  18
                         switch (alt11) {
 937  
                                 case 1 :
 938  
                                         // org/argouml/language/java/reveng/Java.g:464:9: classOrInterfaceDeclaration
 939  
                                         {
 940  18
                                         pushFollow(FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration317);
 941  18
                                         classOrInterfaceDeclaration();
 942  18
                                         state._fsp--;
 943  18
                                         if (state.failed) return;
 944  
                                         }
 945  
                                         break;
 946  
                                 case 2 :
 947  
                                         // org/argouml/language/java/reveng/Java.g:465:9: ';'
 948  
                                         {
 949  0
                                         match(input,50,FOLLOW_50_in_typeDeclaration327); if (state.failed) return;
 950  
                                         }
 951  
                                         break;
 952  
 
 953  
                         }
 954  
                 }
 955  0
                 catch (RecognitionException re) {
 956  0
                         reportError(re);
 957  0
                         recover(input,re);
 958  
                 }
 959  
                 finally {
 960  
                         // do for sure before leaving
 961  18
                         if ( state.backtracking>0 ) { memoize(input, 4, typeDeclaration_StartIndex); }
 962  
 
 963  0
                 }
 964  18
         }
 965  
         // $ANTLR end "typeDeclaration"
 966  
 
 967  
 
 968  
 
 969  
         // $ANTLR start "classOrInterfaceDeclaration"
 970  
         // org/argouml/language/java/reveng/Java.g:468:1: classOrInterfaceDeclaration : m= classOrInterfaceModifiers ( classDeclaration[getJavadocComment(), m] | interfaceDeclaration[getJavadocComment(), m] ) ;
 971  
         public final void classOrInterfaceDeclaration() throws RecognitionException {
 972  18
                 int classOrInterfaceDeclaration_StartIndex = input.index();
 973  
 
 974  18
                 short m =0;
 975  
 
 976  
                 try {
 977  18
                         if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return; }
 978  
 
 979  
                         // org/argouml/language/java/reveng/Java.g:469:5: (m= classOrInterfaceModifiers ( classDeclaration[getJavadocComment(), m] | interfaceDeclaration[getJavadocComment(), m] ) )
 980  
                         // org/argouml/language/java/reveng/Java.g:469:9: m= classOrInterfaceModifiers ( classDeclaration[getJavadocComment(), m] | interfaceDeclaration[getJavadocComment(), m] )
 981  
                         {
 982  18
                         pushFollow(FOLLOW_classOrInterfaceModifiers_in_classOrInterfaceDeclaration348);
 983  18
                         m=classOrInterfaceModifiers();
 984  18
                         state._fsp--;
 985  18
                         if (state.failed) return;
 986  
                         // org/argouml/language/java/reveng/Java.g:470:9: ( classDeclaration[getJavadocComment(), m] | interfaceDeclaration[getJavadocComment(), m] )
 987  18
                         int alt12=2;
 988  18
                         int LA12_0 = input.LA(1);
 989  18
                         if ( (LA12_0==ENUM||LA12_0==68) ) {
 990  14
                                 alt12=1;
 991  
                         }
 992  4
                         else if ( (LA12_0==56||LA12_0==85) ) {
 993  4
                                 alt12=2;
 994  
                         }
 995  
 
 996  
                         else {
 997  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 998  0
                                 NoViableAltException nvae =
 999  
                                         new NoViableAltException("", 12, 0, input);
 1000  0
                                 throw nvae;
 1001  
                         }
 1002  
 
 1003  18
                         switch (alt12) {
 1004  
                                 case 1 :
 1005  
                                         // org/argouml/language/java/reveng/Java.g:470:13: classDeclaration[getJavadocComment(), m]
 1006  
                                         {
 1007  14
                                         pushFollow(FOLLOW_classDeclaration_in_classOrInterfaceDeclaration362);
 1008  14
                                         classDeclaration(getJavadocComment(), m);
 1009  14
                                         state._fsp--;
 1010  14
                                         if (state.failed) return;
 1011  
                                         }
 1012  
                                         break;
 1013  
                                 case 2 :
 1014  
                                         // org/argouml/language/java/reveng/Java.g:471:13: interfaceDeclaration[getJavadocComment(), m]
 1015  
                                         {
 1016  4
                                         pushFollow(FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration377);
 1017  4
                                         interfaceDeclaration(getJavadocComment(), m);
 1018  4
                                         state._fsp--;
 1019  4
                                         if (state.failed) return;
 1020  
                                         }
 1021  
                                         break;
 1022  
 
 1023  
                         }
 1024  
 
 1025  
                         }
 1026  
 
 1027  
                 }
 1028  0
                 catch (RecognitionException re) {
 1029  0
                         reportError(re);
 1030  0
                         recover(input,re);
 1031  
                 }
 1032  
                 finally {
 1033  
                         // do for sure before leaving
 1034  18
                         if ( state.backtracking>0 ) { memoize(input, 5, classOrInterfaceDeclaration_StartIndex); }
 1035  
 
 1036  0
                 }
 1037  18
         }
 1038  
         // $ANTLR end "classOrInterfaceDeclaration"
 1039  
 
 1040  
 
 1041  
 
 1042  
         // $ANTLR start "classOrInterfaceModifiers"
 1043  
         // org/argouml/language/java/reveng/Java.g:475:1: classOrInterfaceModifiers returns [short m = 0] : (sub_m= classOrInterfaceModifier )* ;
 1044  
         public final short classOrInterfaceModifiers() throws RecognitionException {
 1045  18
                 short m =  0;
 1046  
 
 1047  18
                 int classOrInterfaceModifiers_StartIndex = input.index();
 1048  
 
 1049  18
                 short sub_m =0;
 1050  
 
 1051  
                 try {
 1052  18
                         if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return m; }
 1053  
 
 1054  
                         // org/argouml/language/java/reveng/Java.g:476:5: ( (sub_m= classOrInterfaceModifier )* )
 1055  
                         // org/argouml/language/java/reveng/Java.g:476:9: (sub_m= classOrInterfaceModifier )*
 1056  
                         {
 1057  18
                         if ( state.backtracking==0 ) {
 1058  18
                                     updateJavadocComment();
 1059  
                                 }
 1060  
                         // org/argouml/language/java/reveng/Java.g:479:9: (sub_m= classOrInterfaceModifier )*
 1061  
                         loop13:
 1062  
                         while (true) {
 1063  48
                                 int alt13=2;
 1064  48
                                 int LA13_0 = input.LA(1);
 1065  48
                                 if ( (LA13_0==56) ) {
 1066  0
                                         int LA13_4 = input.LA(2);
 1067  0
                                         if ( (LA13_4==Identifier) ) {
 1068  0
                                                 alt13=1;
 1069  
                                         }
 1070  
 
 1071  0
                                 }
 1072  48
                                 else if ( (LA13_0==61||LA13_0==76||(LA13_0 >= 91 && LA13_0 <= 93)||(LA13_0 >= 96 && LA13_0 <= 97)) ) {
 1073  30
                                         alt13=1;
 1074  
                                 }
 1075  
 
 1076  48
                                 switch (alt13) {
 1077  
                                 case 1 :
 1078  
                                         // org/argouml/language/java/reveng/Java.g:479:13: sub_m= classOrInterfaceModifier
 1079  
                                         {
 1080  30
                                         pushFollow(FOLLOW_classOrInterfaceModifier_in_classOrInterfaceModifiers431);
 1081  30
                                         sub_m=classOrInterfaceModifier();
 1082  30
                                         state._fsp--;
 1083  30
                                         if (state.failed) return m;
 1084  30
                                         if ( state.backtracking==0 ) {
 1085  30
                                                         m |= sub_m;
 1086  
                                                     }
 1087  
                                         }
 1088  
                                         break;
 1089  
 
 1090  
                                 default :
 1091  18
                                         break loop13;
 1092  
                                 }
 1093  30
                         }
 1094  
 
 1095  
                         }
 1096  
 
 1097  
                 }
 1098  0
                 catch (RecognitionException re) {
 1099  0
                         reportError(re);
 1100  0
                         recover(input,re);
 1101  
                 }
 1102  
                 finally {
 1103  
                         // do for sure before leaving
 1104  18
                         if ( state.backtracking>0 ) { memoize(input, 6, classOrInterfaceModifiers_StartIndex); }
 1105  
 
 1106  0
                 }
 1107  18
                 return m;
 1108  
         }
 1109  
         // $ANTLR end "classOrInterfaceModifiers"
 1110  
 
 1111  
 
 1112  
 
 1113  
         // $ANTLR start "classOrInterfaceModifier"
 1114  
         // org/argouml/language/java/reveng/Java.g:486:1: classOrInterfaceModifier returns [short m = 0] : ( annotation | 'public' | 'protected' | 'private' | 'abstract' | 'static' | 'final' | 'strictfp' );
 1115  
         public final short classOrInterfaceModifier() throws RecognitionException {
 1116  30
                 short m =  0;
 1117  
 
 1118  30
                 int classOrInterfaceModifier_StartIndex = input.index();
 1119  
 
 1120  
                 try {
 1121  30
                         if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return m; }
 1122  
 
 1123  
                         // org/argouml/language/java/reveng/Java.g:487:5: ( annotation | 'public' | 'protected' | 'private' | 'abstract' | 'static' | 'final' | 'strictfp' )
 1124  30
                         int alt14=8;
 1125  30
                         switch ( input.LA(1) ) {
 1126  
                         case 56:
 1127  
                                 {
 1128  0
                                 alt14=1;
 1129  
                                 }
 1130  0
                                 break;
 1131  
                         case 93:
 1132  
                                 {
 1133  18
                                 alt14=2;
 1134  
                                 }
 1135  18
                                 break;
 1136  
                         case 92:
 1137  
                                 {
 1138  0
                                 alt14=3;
 1139  
                                 }
 1140  0
                                 break;
 1141  
                         case 91:
 1142  
                                 {
 1143  0
                                 alt14=4;
 1144  
                                 }
 1145  0
                                 break;
 1146  
                         case 61:
 1147  
                                 {
 1148  12
                                 alt14=5;
 1149  
                                 }
 1150  12
                                 break;
 1151  
                         case 96:
 1152  
                                 {
 1153  0
                                 alt14=6;
 1154  
                                 }
 1155  0
                                 break;
 1156  
                         case 76:
 1157  
                                 {
 1158  0
                                 alt14=7;
 1159  
                                 }
 1160  0
                                 break;
 1161  
                         case 97:
 1162  
                                 {
 1163  0
                                 alt14=8;
 1164  
                                 }
 1165  0
                                 break;
 1166  
                         default:
 1167  0
                                 if (state.backtracking>0) {state.failed=true; return m;}
 1168  0
                                 NoViableAltException nvae =
 1169  
                                         new NoViableAltException("", 14, 0, input);
 1170  0
                                 throw nvae;
 1171  
                         }
 1172  30
                         switch (alt14) {
 1173  
                                 case 1 :
 1174  
                                         // org/argouml/language/java/reveng/Java.g:487:9: annotation
 1175  
                                         {
 1176  0
                                         pushFollow(FOLLOW_annotation_in_classOrInterfaceModifier479);
 1177  0
                                         annotation();
 1178  0
                                         state._fsp--;
 1179  0
                                         if (state.failed) return m;
 1180  
                                         }
 1181  
                                         break;
 1182  
                                 case 2 :
 1183  
                                         // org/argouml/language/java/reveng/Java.g:488:9: 'public'
 1184  
                                         {
 1185  18
                                         match(input,93,FOLLOW_93_in_classOrInterfaceModifier489); if (state.failed) return m;
 1186  18
                                         if ( state.backtracking==0 ) { m = ACC_PUBLIC; }
 1187  
                                         }
 1188  
                                         break;
 1189  
                                 case 3 :
 1190  
                                         // org/argouml/language/java/reveng/Java.g:489:9: 'protected'
 1191  
                                         {
 1192  0
                                         match(input,92,FOLLOW_92_in_classOrInterfaceModifier505); if (state.failed) return m;
 1193  0
                                         if ( state.backtracking==0 ) { m = ACC_PROTECTED; }
 1194  
                                         }
 1195  
                                         break;
 1196  
                                 case 4 :
 1197  
                                         // org/argouml/language/java/reveng/Java.g:490:9: 'private'
 1198  
                                         {
 1199  0
                                         match(input,91,FOLLOW_91_in_classOrInterfaceModifier518); if (state.failed) return m;
 1200  0
                                         if ( state.backtracking==0 ) { m = ACC_PRIVATE; }
 1201  
                                         }
 1202  
                                         break;
 1203  
                                 case 5 :
 1204  
                                         // org/argouml/language/java/reveng/Java.g:491:9: 'abstract'
 1205  
                                         {
 1206  12
                                         match(input,61,FOLLOW_61_in_classOrInterfaceModifier533); if (state.failed) return m;
 1207  12
                                         if ( state.backtracking==0 ) { m = ACC_ABSTRACT; }
 1208  
                                         }
 1209  
                                         break;
 1210  
                                 case 6 :
 1211  
                                         // org/argouml/language/java/reveng/Java.g:492:9: 'static'
 1212  
                                         {
 1213  0
                                         match(input,96,FOLLOW_96_in_classOrInterfaceModifier547); if (state.failed) return m;
 1214  0
                                         if ( state.backtracking==0 ) { m = ACC_STATIC; }
 1215  
                                         }
 1216  
                                         break;
 1217  
                                 case 7 :
 1218  
                                         // org/argouml/language/java/reveng/Java.g:493:9: 'final'
 1219  
                                         {
 1220  0
                                         match(input,76,FOLLOW_76_in_classOrInterfaceModifier563); if (state.failed) return m;
 1221  0
                                         if ( state.backtracking==0 ) { m = ACC_FINAL; }
 1222  
                                         }
 1223  
                                         break;
 1224  
                                 case 8 :
 1225  
                                         // org/argouml/language/java/reveng/Java.g:494:9: 'strictfp'
 1226  
                                         {
 1227  0
                                         match(input,97,FOLLOW_97_in_classOrInterfaceModifier581); if (state.failed) return m;
 1228  
                                         }
 1229  
                                         break;
 1230  
 
 1231  
                         }
 1232  
                 }
 1233  0
                 catch (RecognitionException re) {
 1234  0
                         reportError(re);
 1235  0
                         recover(input,re);
 1236  
                 }
 1237  
                 finally {
 1238  
                         // do for sure before leaving
 1239  30
                         if ( state.backtracking>0 ) { memoize(input, 7, classOrInterfaceModifier_StartIndex); }
 1240  
 
 1241  0
                 }
 1242  30
                 return m;
 1243  
         }
 1244  
         // $ANTLR end "classOrInterfaceModifier"
 1245  
 
 1246  
 
 1247  
 
 1248  
         // $ANTLR start "modifiers"
 1249  
         // org/argouml/language/java/reveng/Java.g:497:1: modifiers returns [short m = 0] : (sub_m= modifier )* ;
 1250  
         public final short modifiers() throws RecognitionException {
 1251  89
                 short m =  0;
 1252  
 
 1253  89
                 int modifiers_StartIndex = input.index();
 1254  
 
 1255  89
                 short sub_m =0;
 1256  
 
 1257  
                 try {
 1258  89
                         if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return m; }
 1259  
 
 1260  
                         // org/argouml/language/java/reveng/Java.g:498:5: ( (sub_m= modifier )* )
 1261  
                         // org/argouml/language/java/reveng/Java.g:498:9: (sub_m= modifier )*
 1262  
                         {
 1263  89
                         if ( state.backtracking==0 ) {
 1264  89
                                     updateJavadocComment();
 1265  
                                 }
 1266  
                         // org/argouml/language/java/reveng/Java.g:501:9: (sub_m= modifier )*
 1267  
                         loop15:
 1268  
                         while (true) {
 1269  221
                                 int alt15=2;
 1270  221
                                 int LA15_0 = input.LA(1);
 1271  221
                                 if ( (LA15_0==56) ) {
 1272  0
                                         int LA15_6 = input.LA(2);
 1273  0
                                         if ( (LA15_6==Identifier) ) {
 1274  0
                                                 alt15=1;
 1275  
                                         }
 1276  
 
 1277  0
                                 }
 1278  221
                                 else if ( (LA15_0==61||LA15_0==76||LA15_0==87||(LA15_0 >= 91 && LA15_0 <= 93)||(LA15_0 >= 96 && LA15_0 <= 97)||LA15_0==100||LA15_0==104||LA15_0==108) ) {
 1279  132
                                         alt15=1;
 1280  
                                 }
 1281  
 
 1282  221
                                 switch (alt15) {
 1283  
                                 case 1 :
 1284  
                                         // org/argouml/language/java/reveng/Java.g:501:13: sub_m= modifier
 1285  
                                         {
 1286  132
                                         pushFollow(FOLLOW_modifier_in_modifiers620);
 1287  132
                                         sub_m=modifier();
 1288  132
                                         state._fsp--;
 1289  132
                                         if (state.failed) return m;
 1290  132
                                         if ( state.backtracking==0 ) {
 1291  132
                                                         m |= sub_m;
 1292  
                                                     }
 1293  
                                         }
 1294  
                                         break;
 1295  
 
 1296  
                                 default :
 1297  89
                                         break loop15;
 1298  
                                 }
 1299  132
                         }
 1300  
 
 1301  
                         }
 1302  
 
 1303  
                 }
 1304  0
                 catch (RecognitionException re) {
 1305  0
                         reportError(re);
 1306  0
                         recover(input,re);
 1307  
                 }
 1308  
                 finally {
 1309  
                         // do for sure before leaving
 1310  89
                         if ( state.backtracking>0 ) { memoize(input, 8, modifiers_StartIndex); }
 1311  
 
 1312  0
                 }
 1313  89
                 return m;
 1314  
         }
 1315  
         // $ANTLR end "modifiers"
 1316  
 
 1317  
 
 1318  
 
 1319  
         // $ANTLR start "classDeclaration"
 1320  
         // org/argouml/language/java/reveng/Java.g:509:1: classDeclaration[String javadoc, short modifiers] : ( normalClassDeclaration[javadoc, modifiers] | enumDeclaration[javadoc, modifiers] );
 1321  
         public final void classDeclaration(String javadoc, short modifiers) throws RecognitionException {
 1322  18
                 int classDeclaration_StartIndex = input.index();
 1323  
 
 1324  
                 try {
 1325  18
                         if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return; }
 1326  
 
 1327  
                         // org/argouml/language/java/reveng/Java.g:510:5: ( normalClassDeclaration[javadoc, modifiers] | enumDeclaration[javadoc, modifiers] )
 1328  18
                         int alt16=2;
 1329  18
                         int LA16_0 = input.LA(1);
 1330  18
                         if ( (LA16_0==68) ) {
 1331  14
                                 alt16=1;
 1332  
                         }
 1333  4
                         else if ( (LA16_0==ENUM) ) {
 1334  4
                                 alt16=2;
 1335  
                         }
 1336  
 
 1337  
                         else {
 1338  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 1339  0
                                 NoViableAltException nvae =
 1340  
                                         new NoViableAltException("", 16, 0, input);
 1341  0
                                 throw nvae;
 1342  
                         }
 1343  
 
 1344  18
                         switch (alt16) {
 1345  
                                 case 1 :
 1346  
                                         // org/argouml/language/java/reveng/Java.g:510:9: normalClassDeclaration[javadoc, modifiers]
 1347  
                                         {
 1348  14
                                         pushFollow(FOLLOW_normalClassDeclaration_in_classDeclaration666);
 1349  14
                                         normalClassDeclaration(javadoc, modifiers);
 1350  14
                                         state._fsp--;
 1351  14
                                         if (state.failed) return;
 1352  
                                         }
 1353  
                                         break;
 1354  
                                 case 2 :
 1355  
                                         // org/argouml/language/java/reveng/Java.g:511:9: enumDeclaration[javadoc, modifiers]
 1356  
                                         {
 1357  4
                                         pushFollow(FOLLOW_enumDeclaration_in_classDeclaration677);
 1358  4
                                         enumDeclaration(javadoc, modifiers);
 1359  4
                                         state._fsp--;
 1360  4
                                         if (state.failed) return;
 1361  
                                         }
 1362  
                                         break;
 1363  
 
 1364  
                         }
 1365  
                 }
 1366  0
                 catch (RecognitionException re) {
 1367  0
                         reportError(re);
 1368  0
                         recover(input,re);
 1369  
                 }
 1370  
                 finally {
 1371  
                         // do for sure before leaving
 1372  18
                         if ( state.backtracking>0 ) { memoize(input, 9, classDeclaration_StartIndex); }
 1373  
 
 1374  0
                 }
 1375  18
         }
 1376  
         // $ANTLR end "classDeclaration"
 1377  
 
 1378  
 
 1379  
 
 1380  
         // $ANTLR start "normalClassDeclaration"
 1381  
         // org/argouml/language/java/reveng/Java.g:514:1: normalClassDeclaration[String javadoc, short modifiers] : 'class' className= Identifier (tp= typeParameters )? ( 'extends' t= type )? ( 'implements' tl= typeList )? classBody ;
 1382  
         public final void normalClassDeclaration(String javadoc, short modifiers) throws RecognitionException {
 1383  14
                 int normalClassDeclaration_StartIndex = input.index();
 1384  
 
 1385  14
                 Token className=null;
 1386  14
                 List<String> tp =null;
 1387  14
                 String t =null;
 1388  14
                 List<String> tl =null;
 1389  
 
 1390  
 
 1391  14
                         String superClassName = null;
 1392  14
                         List<String> ic = new ArrayList<String>();
 1393  14
                         List<String> tparam = new ArrayList<String>();
 1394  
                     
 1395  
                 try {
 1396  14
                         if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return; }
 1397  
 
 1398  
                         // org/argouml/language/java/reveng/Java.g:520:5: ( 'class' className= Identifier (tp= typeParameters )? ( 'extends' t= type )? ( 'implements' tl= typeList )? classBody )
 1399  
                         // org/argouml/language/java/reveng/Java.g:520:9: 'class' className= Identifier (tp= typeParameters )? ( 'extends' t= type )? ( 'implements' tl= typeList )? classBody
 1400  
                         {
 1401  14
                         match(input,68,FOLLOW_68_in_normalClassDeclaration710); if (state.failed) return;
 1402  14
                         className=(Token)match(input,Identifier,FOLLOW_Identifier_in_normalClassDeclaration714); if (state.failed) return;
 1403  
                         // org/argouml/language/java/reveng/Java.g:521:9: (tp= typeParameters )?
 1404  14
                         int alt17=2;
 1405  14
                         int LA17_0 = input.LA(1);
 1406  14
                         if ( (LA17_0==51) ) {
 1407  0
                                 alt17=1;
 1408  
                         }
 1409  14
                         switch (alt17) {
 1410  
                                 case 1 :
 1411  
                                         // org/argouml/language/java/reveng/Java.g:521:10: tp= typeParameters
 1412  
                                         {
 1413  0
                                         pushFollow(FOLLOW_typeParameters_in_normalClassDeclaration727);
 1414  0
                                         tp=typeParameters();
 1415  0
                                         state._fsp--;
 1416  0
                                         if (state.failed) return;
 1417  0
                                         if ( state.backtracking==0 ) { tparam = tp; }
 1418  
                                         }
 1419  
                                         break;
 1420  
 
 1421  
                         }
 1422  
 
 1423  
                         // org/argouml/language/java/reveng/Java.g:522:9: ( 'extends' t= type )?
 1424  14
                         int alt18=2;
 1425  14
                         int LA18_0 = input.LA(1);
 1426  14
                         if ( (LA18_0==74) ) {
 1427  12
                                 alt18=1;
 1428  
                         }
 1429  14
                         switch (alt18) {
 1430  
                                 case 1 :
 1431  
                                         // org/argouml/language/java/reveng/Java.g:522:10: 'extends' t= type
 1432  
                                         {
 1433  12
                                         match(input,74,FOLLOW_74_in_normalClassDeclaration743); if (state.failed) return;
 1434  12
                                         pushFollow(FOLLOW_type_in_normalClassDeclaration747);
 1435  12
                                         t=type();
 1436  12
                                         state._fsp--;
 1437  12
                                         if (state.failed) return;
 1438  12
                                         if ( state.backtracking==0 ) { superClassName = t; }
 1439  
                                         }
 1440  
                                         break;
 1441  
 
 1442  
                         }
 1443  
 
 1444  
                         // org/argouml/language/java/reveng/Java.g:523:9: ( 'implements' tl= typeList )?
 1445  14
                         int alt19=2;
 1446  14
                         int LA19_0 = input.LA(1);
 1447  14
                         if ( (LA19_0==81) ) {
 1448  12
                                 alt19=1;
 1449  
                         }
 1450  14
                         switch (alt19) {
 1451  
                                 case 1 :
 1452  
                                         // org/argouml/language/java/reveng/Java.g:523:10: 'implements' tl= typeList
 1453  
                                         {
 1454  12
                                         match(input,81,FOLLOW_81_in_normalClassDeclaration763); if (state.failed) return;
 1455  12
                                         pushFollow(FOLLOW_typeList_in_normalClassDeclaration767);
 1456  12
                                         tl=typeList();
 1457  12
                                         state._fsp--;
 1458  12
                                         if (state.failed) return;
 1459  12
                                         if ( state.backtracking==0 ) { ic = tl; }
 1460  
                                         }
 1461  
                                         break;
 1462  
 
 1463  
                         }
 1464  
 
 1465  14
                         if ( state.backtracking==0 ) {
 1466  14
                                     if (!isInCompoundStatement()) {
 1467  14
                                         getModeller().addClass((className!=null?className.getText():null), modifiers, tparam,
 1468  
                                             superClassName, ic, javadoc,
 1469  
                                             (parserMode == MODE_IMPORT_PASS2));
 1470  
                                     }
 1471  
                                 }
 1472  14
                         pushFollow(FOLLOW_classBody_in_normalClassDeclaration801);
 1473  14
                         classBody();
 1474  14
                         state._fsp--;
 1475  14
                         if (state.failed) return;
 1476  14
                         if ( state.backtracking==0 ) {
 1477  14
                                     if (!isInCompoundStatement()) {
 1478  14
                                         getModeller().popClassifier();
 1479  
                                     }
 1480  
                                 }
 1481  
                         }
 1482  
 
 1483  
                 }
 1484  0
                 catch (RecognitionException re) {
 1485  0
                         reportError(re);
 1486  0
                         recover(input,re);
 1487  
                 }
 1488  
                 finally {
 1489  
                         // do for sure before leaving
 1490  14
                         if ( state.backtracking>0 ) { memoize(input, 10, normalClassDeclaration_StartIndex); }
 1491  
 
 1492  0
                 }
 1493  14
         }
 1494  
         // $ANTLR end "normalClassDeclaration"
 1495  
 
 1496  
 
 1497  
 
 1498  
         // $ANTLR start "typeParameters"
 1499  
         // org/argouml/language/java/reveng/Java.g:540:1: typeParameters returns [List<String> names = new ArrayList<String>()] : '<' n= typeParameter ( ',' n= typeParameter )* '>' {...}?;
 1500  
         public final List<String> typeParameters() throws RecognitionException {
 1501  0
                 List<String> names =  new ArrayList<String>();
 1502  
 
 1503  0
                 int typeParameters_StartIndex = input.index();
 1504  
 
 1505  0
                 String n =null;
 1506  
 
 1507  
 
 1508  0
                         int currentLtLevel = ltCounter;
 1509  
                     
 1510  
                 try {
 1511  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return names; }
 1512  
 
 1513  
                         // org/argouml/language/java/reveng/Java.g:544:5: ( '<' n= typeParameter ( ',' n= typeParameter )* '>' {...}?)
 1514  
                         // org/argouml/language/java/reveng/Java.g:545:9: '<' n= typeParameter ( ',' n= typeParameter )* '>' {...}?
 1515  
                         {
 1516  0
                         match(input,51,FOLLOW_51_in_typeParameters848); if (state.failed) return names;
 1517  0
                         if ( state.backtracking==0 ) { ltCounter++; }
 1518  0
                         pushFollow(FOLLOW_typeParameter_in_typeParameters879);
 1519  0
                         n=typeParameter();
 1520  0
                         state._fsp--;
 1521  0
                         if (state.failed) return names;
 1522  0
                         if ( state.backtracking==0 ) { names.add(n); }
 1523  
                         // org/argouml/language/java/reveng/Java.g:547:9: ( ',' n= typeParameter )*
 1524  
                         loop20:
 1525  
                         while (true) {
 1526  0
                                 int alt20=2;
 1527  0
                                 int LA20_0 = input.LA(1);
 1528  0
                                 if ( (LA20_0==41) ) {
 1529  0
                                         alt20=1;
 1530  
                                 }
 1531  
 
 1532  0
                                 switch (alt20) {
 1533  
                                 case 1 :
 1534  
                                         // org/argouml/language/java/reveng/Java.g:547:10: ',' n= typeParameter
 1535  
                                         {
 1536  0
                                         match(input,41,FOLLOW_41_in_typeParameters897); if (state.failed) return names;
 1537  0
                                         pushFollow(FOLLOW_typeParameter_in_typeParameters901);
 1538  0
                                         n=typeParameter();
 1539  0
                                         state._fsp--;
 1540  0
                                         if (state.failed) return names;
 1541  0
                                         if ( state.backtracking==0 ) { names.add(n); }
 1542  
                                         }
 1543  
                                         break;
 1544  
 
 1545  
                                 default :
 1546  0
                                         break loop20;
 1547  
                                 }
 1548  0
                         }
 1549  
 
 1550  0
                         match(input,54,FOLLOW_54_in_typeParameters924); if (state.failed) return names;
 1551  0
                         if ( state.backtracking==0 ) { ltCounter--; }
 1552  0
                         if ( !(( currentLtLevel != 0 || ltCounter == currentLtLevel )) ) {
 1553  0
                                 if (state.backtracking>0) {state.failed=true; return names;}
 1554  0
                                 throw new FailedPredicateException(input, "typeParameters", " currentLtLevel != 0 || ltCounter == currentLtLevel ");
 1555  
                         }
 1556  
                         }
 1557  
 
 1558  
                 }
 1559  0
                 catch (RecognitionException re) {
 1560  0
                         reportError(re);
 1561  0
                         recover(input,re);
 1562  
                 }
 1563  
                 finally {
 1564  
                         // do for sure before leaving
 1565  0
                         if ( state.backtracking>0 ) { memoize(input, 11, typeParameters_StartIndex); }
 1566  
 
 1567  0
                 }
 1568  0
                 return names;
 1569  
         }
 1570  
         // $ANTLR end "typeParameters"
 1571  
 
 1572  
 
 1573  
 
 1574  
         // $ANTLR start "typeParameter"
 1575  
         // org/argouml/language/java/reveng/Java.g:555:1: typeParameter returns [String type = null] : t= Identifier ( 'extends' name= typeBound )? ( 'super' name= typeBound )? ;
 1576  
         public final String typeParameter() throws RecognitionException {
 1577  0
                 String type =  null;
 1578  
 
 1579  0
                 int typeParameter_StartIndex = input.index();
 1580  
 
 1581  0
                 Token t=null;
 1582  0
                 String name =null;
 1583  
 
 1584  
 
 1585  0
                         StringBuffer sb = new StringBuffer();
 1586  
                     
 1587  
                 try {
 1588  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return type; }
 1589  
 
 1590  
                         // org/argouml/language/java/reveng/Java.g:559:5: (t= Identifier ( 'extends' name= typeBound )? ( 'super' name= typeBound )? )
 1591  
                         // org/argouml/language/java/reveng/Java.g:559:9: t= Identifier ( 'extends' name= typeBound )? ( 'super' name= typeBound )?
 1592  
                         {
 1593  0
                         t=(Token)match(input,Identifier,FOLLOW_Identifier_in_typeParameter1004); if (state.failed) return type;
 1594  0
                         if ( state.backtracking==0 ) { sb.append((t!=null?t.getText():null)); }
 1595  
                         // org/argouml/language/java/reveng/Java.g:560:9: ( 'extends' name= typeBound )?
 1596  0
                         int alt21=2;
 1597  0
                         int LA21_0 = input.LA(1);
 1598  0
                         if ( (LA21_0==74) ) {
 1599  0
                                 alt21=1;
 1600  
                         }
 1601  0
                         switch (alt21) {
 1602  
                                 case 1 :
 1603  
                                         // org/argouml/language/java/reveng/Java.g:560:10: 'extends' name= typeBound
 1604  
                                         {
 1605  0
                                         match(input,74,FOLLOW_74_in_typeParameter1030); if (state.failed) return type;
 1606  0
                                         pushFollow(FOLLOW_typeBound_in_typeParameter1034);
 1607  0
                                         name=typeBound();
 1608  0
                                         state._fsp--;
 1609  0
                                         if (state.failed) return type;
 1610  0
                                         if ( state.backtracking==0 ) { sb.append(" extends ").append(name); }
 1611  
                                         }
 1612  
                                         break;
 1613  
 
 1614  
                         }
 1615  
 
 1616  
                         // org/argouml/language/java/reveng/Java.g:562:9: ( 'super' name= typeBound )?
 1617  0
                         int alt22=2;
 1618  0
                         int LA22_0 = input.LA(1);
 1619  0
                         if ( (LA22_0==98) ) {
 1620  0
                                 alt22=1;
 1621  
                         }
 1622  0
                         switch (alt22) {
 1623  
                                 case 1 :
 1624  
                                         // org/argouml/language/java/reveng/Java.g:562:10: 'super' name= typeBound
 1625  
                                         {
 1626  0
                                         match(input,98,FOLLOW_98_in_typeParameter1058); if (state.failed) return type;
 1627  0
                                         pushFollow(FOLLOW_typeBound_in_typeParameter1062);
 1628  0
                                         name=typeBound();
 1629  0
                                         state._fsp--;
 1630  0
                                         if (state.failed) return type;
 1631  0
                                         if ( state.backtracking==0 ) { sb.append(" super ").append(name); }
 1632  
                                         }
 1633  
                                         break;
 1634  
 
 1635  
                         }
 1636  
 
 1637  0
                         if ( state.backtracking==0 ) {
 1638  0
                                     type = sb.toString();
 1639  
                                 }
 1640  
                         }
 1641  
 
 1642  
                 }
 1643  0
                 catch (RecognitionException re) {
 1644  0
                         reportError(re);
 1645  0
                         recover(input,re);
 1646  
                 }
 1647  
                 finally {
 1648  
                         // do for sure before leaving
 1649  0
                         if ( state.backtracking>0 ) { memoize(input, 12, typeParameter_StartIndex); }
 1650  
 
 1651  0
                 }
 1652  0
                 return type;
 1653  
         }
 1654  
         // $ANTLR end "typeParameter"
 1655  
 
 1656  
 
 1657  
 
 1658  
         // $ANTLR start "typeBound"
 1659  
         // org/argouml/language/java/reveng/Java.g:569:1: typeBound returns [String type = null] : name= type ( '&' name= type )* ;
 1660  
         public final String typeBound() throws RecognitionException {
 1661  0
                 String type =  null;
 1662  
 
 1663  0
                 int typeBound_StartIndex = input.index();
 1664  
 
 1665  0
                 String name =null;
 1666  
 
 1667  
 
 1668  0
                         StringBuffer sb = new StringBuffer();
 1669  
                     
 1670  
                 try {
 1671  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return type; }
 1672  
 
 1673  
                         // org/argouml/language/java/reveng/Java.g:573:5: (name= type ( '&' name= type )* )
 1674  
                         // org/argouml/language/java/reveng/Java.g:573:9: name= type ( '&' name= type )*
 1675  
                         {
 1676  0
                         pushFollow(FOLLOW_type_in_typeBound1126);
 1677  0
                         name=type();
 1678  0
                         state._fsp--;
 1679  0
                         if (state.failed) return type;
 1680  0
                         if ( state.backtracking==0 ) { sb.append(name); }
 1681  
                         // org/argouml/language/java/reveng/Java.g:574:9: ( '&' name= type )*
 1682  
                         loop23:
 1683  
                         while (true) {
 1684  0
                                 int alt23=2;
 1685  0
                                 int LA23_0 = input.LA(1);
 1686  0
                                 if ( (LA23_0==32) ) {
 1687  0
                                         alt23=1;
 1688  
                                 }
 1689  
 
 1690  0
                                 switch (alt23) {
 1691  
                                 case 1 :
 1692  
                                         // org/argouml/language/java/reveng/Java.g:574:10: '&' name= type
 1693  
                                         {
 1694  0
                                         match(input,32,FOLLOW_32_in_typeBound1144); if (state.failed) return type;
 1695  0
                                         pushFollow(FOLLOW_type_in_typeBound1148);
 1696  0
                                         name=type();
 1697  0
                                         state._fsp--;
 1698  0
                                         if (state.failed) return type;
 1699  0
                                         if ( state.backtracking==0 ) { sb.append("&").append(name); }
 1700  
                                         }
 1701  
                                         break;
 1702  
 
 1703  
                                 default :
 1704  0
                                         break loop23;
 1705  
                                 }
 1706  0
                         }
 1707  
 
 1708  0
                         if ( state.backtracking==0 ) {
 1709  0
                                     type = sb.toString();
 1710  
                                 }
 1711  
                         }
 1712  
 
 1713  
                 }
 1714  0
                 catch (RecognitionException re) {
 1715  0
                         reportError(re);
 1716  0
                         recover(input,re);
 1717  
                 }
 1718  
                 finally {
 1719  
                         // do for sure before leaving
 1720  0
                         if ( state.backtracking>0 ) { memoize(input, 13, typeBound_StartIndex); }
 1721  
 
 1722  0
                 }
 1723  0
                 return type;
 1724  
         }
 1725  
         // $ANTLR end "typeBound"
 1726  
 
 1727  
 
 1728  
 
 1729  
         // $ANTLR start "enumDeclaration"
 1730  
         // org/argouml/language/java/reveng/Java.g:582:1: enumDeclaration[String javadoc, short modifiers] : ENUM enumName= Identifier ( 'implements' tl= typeList )? enumBody ;
 1731  
         public final void enumDeclaration(String javadoc, short modifiers) throws RecognitionException {
 1732  4
                 int enumDeclaration_StartIndex = input.index();
 1733  
 
 1734  4
                 Token enumName=null;
 1735  4
                 List<String> tl =null;
 1736  
 
 1737  
 
 1738  4
                         List<String> ic = new ArrayList<String>();
 1739  
                     
 1740  
                 try {
 1741  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return; }
 1742  
 
 1743  
                         // org/argouml/language/java/reveng/Java.g:586:5: ( ENUM enumName= Identifier ( 'implements' tl= typeList )? enumBody )
 1744  
                         // org/argouml/language/java/reveng/Java.g:586:9: ENUM enumName= Identifier ( 'implements' tl= typeList )? enumBody
 1745  
                         {
 1746  4
                         match(input,ENUM,FOLLOW_ENUM_in_enumDeclaration1200); if (state.failed) return;
 1747  4
                         enumName=(Token)match(input,Identifier,FOLLOW_Identifier_in_enumDeclaration1204); if (state.failed) return;
 1748  
                         // org/argouml/language/java/reveng/Java.g:586:34: ( 'implements' tl= typeList )?
 1749  4
                         int alt24=2;
 1750  4
                         int LA24_0 = input.LA(1);
 1751  4
                         if ( (LA24_0==81) ) {
 1752  0
                                 alt24=1;
 1753  
                         }
 1754  4
                         switch (alt24) {
 1755  
                                 case 1 :
 1756  
                                         // org/argouml/language/java/reveng/Java.g:586:35: 'implements' tl= typeList
 1757  
                                         {
 1758  0
                                         match(input,81,FOLLOW_81_in_enumDeclaration1207); if (state.failed) return;
 1759  0
                                         pushFollow(FOLLOW_typeList_in_enumDeclaration1211);
 1760  0
                                         tl=typeList();
 1761  0
                                         state._fsp--;
 1762  0
                                         if (state.failed) return;
 1763  0
                                         if ( state.backtracking==0 ) { ic = tl; }
 1764  
                                         }
 1765  
                                         break;
 1766  
 
 1767  
                         }
 1768  
 
 1769  4
                         if ( state.backtracking==0 ) {
 1770  4
                                     if (!isInCompoundStatement()) {
 1771  4
                                         getModeller().addEnumeration((enumName!=null?enumName.getText():null), modifiers,
 1772  
                                             ic, javadoc, (parserMode == MODE_IMPORT_PASS2));
 1773  
                                     }
 1774  
                                 }
 1775  4
                         pushFollow(FOLLOW_enumBody_in_enumDeclaration1245);
 1776  4
                         enumBody();
 1777  4
                         state._fsp--;
 1778  4
                         if (state.failed) return;
 1779  4
                         if ( state.backtracking==0 ) {
 1780  4
                                     getModeller().popClassifier();
 1781  
                                 }
 1782  
                         }
 1783  
 
 1784  
                 }
 1785  0
                 catch (RecognitionException re) {
 1786  0
                         reportError(re);
 1787  0
                         recover(input,re);
 1788  
                 }
 1789  
                 finally {
 1790  
                         // do for sure before leaving
 1791  4
                         if ( state.backtracking>0 ) { memoize(input, 14, enumDeclaration_StartIndex); }
 1792  
 
 1793  0
                 }
 1794  4
         }
 1795  
         // $ANTLR end "enumDeclaration"
 1796  
 
 1797  
 
 1798  
 
 1799  
         // $ANTLR start "enumBody"
 1800  
         // org/argouml/language/java/reveng/Java.g:600:1: enumBody : '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' ;
 1801  
         public final void enumBody() throws RecognitionException {
 1802  4
                 int enumBody_StartIndex = input.index();
 1803  
 
 1804  
                 try {
 1805  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return; }
 1806  
 
 1807  
                         // org/argouml/language/java/reveng/Java.g:601:5: ( '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}' )
 1808  
                         // org/argouml/language/java/reveng/Java.g:601:9: '{' ( enumConstants )? ( ',' )? ( enumBodyDeclarations )? '}'
 1809  
                         {
 1810  4
                         match(input,110,FOLLOW_110_in_enumBody1274); if (state.failed) return;
 1811  
                         // org/argouml/language/java/reveng/Java.g:601:13: ( enumConstants )?
 1812  4
                         int alt25=2;
 1813  4
                         int LA25_0 = input.LA(1);
 1814  4
                         if ( (LA25_0==Identifier||LA25_0==56) ) {
 1815  4
                                 alt25=1;
 1816  
                         }
 1817  4
                         switch (alt25) {
 1818  
                                 case 1 :
 1819  
                                         // org/argouml/language/java/reveng/Java.g:601:13: enumConstants
 1820  
                                         {
 1821  4
                                         pushFollow(FOLLOW_enumConstants_in_enumBody1276);
 1822  4
                                         enumConstants();
 1823  4
                                         state._fsp--;
 1824  4
                                         if (state.failed) return;
 1825  
                                         }
 1826  
                                         break;
 1827  
 
 1828  
                         }
 1829  
 
 1830  
                         // org/argouml/language/java/reveng/Java.g:601:28: ( ',' )?
 1831  4
                         int alt26=2;
 1832  4
                         int LA26_0 = input.LA(1);
 1833  4
                         if ( (LA26_0==41) ) {
 1834  0
                                 alt26=1;
 1835  
                         }
 1836  4
                         switch (alt26) {
 1837  
                                 case 1 :
 1838  
                                         // org/argouml/language/java/reveng/Java.g:601:28: ','
 1839  
                                         {
 1840  0
                                         match(input,41,FOLLOW_41_in_enumBody1279); if (state.failed) return;
 1841  
                                         }
 1842  
                                         break;
 1843  
 
 1844  
                         }
 1845  
 
 1846  
                         // org/argouml/language/java/reveng/Java.g:601:33: ( enumBodyDeclarations )?
 1847  4
                         int alt27=2;
 1848  4
                         int LA27_0 = input.LA(1);
 1849  4
                         if ( (LA27_0==50) ) {
 1850  2
                                 alt27=1;
 1851  
                         }
 1852  4
                         switch (alt27) {
 1853  
                                 case 1 :
 1854  
                                         // org/argouml/language/java/reveng/Java.g:601:33: enumBodyDeclarations
 1855  
                                         {
 1856  2
                                         pushFollow(FOLLOW_enumBodyDeclarations_in_enumBody1282);
 1857  2
                                         enumBodyDeclarations();
 1858  2
                                         state._fsp--;
 1859  2
                                         if (state.failed) return;
 1860  
                                         }
 1861  
                                         break;
 1862  
 
 1863  
                         }
 1864  
 
 1865  4
                         match(input,114,FOLLOW_114_in_enumBody1285); if (state.failed) return;
 1866  
                         }
 1867  
 
 1868  
                 }
 1869  0
                 catch (RecognitionException re) {
 1870  0
                         reportError(re);
 1871  0
                         recover(input,re);
 1872  
                 }
 1873  
                 finally {
 1874  
                         // do for sure before leaving
 1875  4
                         if ( state.backtracking>0 ) { memoize(input, 15, enumBody_StartIndex); }
 1876  
 
 1877  0
                 }
 1878  4
         }
 1879  
         // $ANTLR end "enumBody"
 1880  
 
 1881  
 
 1882  
 
 1883  
         // $ANTLR start "enumConstants"
 1884  
         // org/argouml/language/java/reveng/Java.g:604:1: enumConstants : enumConstant ( ',' enumConstant )* ;
 1885  
         public final void enumConstants() throws RecognitionException {
 1886  4
                 int enumConstants_StartIndex = input.index();
 1887  
 
 1888  
                 try {
 1889  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return; }
 1890  
 
 1891  
                         // org/argouml/language/java/reveng/Java.g:605:5: ( enumConstant ( ',' enumConstant )* )
 1892  
                         // org/argouml/language/java/reveng/Java.g:605:9: enumConstant ( ',' enumConstant )*
 1893  
                         {
 1894  4
                         pushFollow(FOLLOW_enumConstant_in_enumConstants1304);
 1895  4
                         enumConstant();
 1896  4
                         state._fsp--;
 1897  4
                         if (state.failed) return;
 1898  
                         // org/argouml/language/java/reveng/Java.g:605:22: ( ',' enumConstant )*
 1899  
                         loop28:
 1900  
                         while (true) {
 1901  12
                                 int alt28=2;
 1902  12
                                 int LA28_0 = input.LA(1);
 1903  12
                                 if ( (LA28_0==41) ) {
 1904  8
                                         int LA28_1 = input.LA(2);
 1905  8
                                         if ( (LA28_1==Identifier||LA28_1==56) ) {
 1906  8
                                                 alt28=1;
 1907  
                                         }
 1908  
 
 1909  
                                 }
 1910  
 
 1911  12
                                 switch (alt28) {
 1912  
                                 case 1 :
 1913  
                                         // org/argouml/language/java/reveng/Java.g:605:23: ',' enumConstant
 1914  
                                         {
 1915  8
                                         match(input,41,FOLLOW_41_in_enumConstants1307); if (state.failed) return;
 1916  8
                                         pushFollow(FOLLOW_enumConstant_in_enumConstants1309);
 1917  8
                                         enumConstant();
 1918  8
                                         state._fsp--;
 1919  8
                                         if (state.failed) return;
 1920  
                                         }
 1921  
                                         break;
 1922  
 
 1923  
                                 default :
 1924  4
                                         break loop28;
 1925  
                                 }
 1926  8
                         }
 1927  
 
 1928  
                         }
 1929  
 
 1930  
                 }
 1931  0
                 catch (RecognitionException re) {
 1932  0
                         reportError(re);
 1933  0
                         recover(input,re);
 1934  
                 }
 1935  
                 finally {
 1936  
                         // do for sure before leaving
 1937  4
                         if ( state.backtracking>0 ) { memoize(input, 16, enumConstants_StartIndex); }
 1938  
 
 1939  0
                 }
 1940  4
         }
 1941  
         // $ANTLR end "enumConstants"
 1942  
 
 1943  
 
 1944  
 
 1945  
         // $ANTLR start "enumConstant"
 1946  
         // org/argouml/language/java/reveng/Java.g:608:1: enumConstant : ( annotations )? name= Identifier ( arguments )? ( classBody )? ;
 1947  
         public final void enumConstant() throws RecognitionException {
 1948  12
                 int enumConstant_StartIndex = input.index();
 1949  
 
 1950  12
                 Token name=null;
 1951  
 
 1952  
                 try {
 1953  12
                         if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return; }
 1954  
 
 1955  
                         // org/argouml/language/java/reveng/Java.g:609:5: ( ( annotations )? name= Identifier ( arguments )? ( classBody )? )
 1956  
                         // org/argouml/language/java/reveng/Java.g:609:9: ( annotations )? name= Identifier ( arguments )? ( classBody )?
 1957  
                         {
 1958  
                         // org/argouml/language/java/reveng/Java.g:609:9: ( annotations )?
 1959  12
                         int alt29=2;
 1960  12
                         int LA29_0 = input.LA(1);
 1961  12
                         if ( (LA29_0==56) ) {
 1962  0
                                 alt29=1;
 1963  
                         }
 1964  12
                         switch (alt29) {
 1965  
                                 case 1 :
 1966  
                                         // org/argouml/language/java/reveng/Java.g:609:9: annotations
 1967  
                                         {
 1968  0
                                         pushFollow(FOLLOW_annotations_in_enumConstant1330);
 1969  0
                                         annotations();
 1970  0
                                         state._fsp--;
 1971  0
                                         if (state.failed) return;
 1972  
                                         }
 1973  
                                         break;
 1974  
 
 1975  
                         }
 1976  
 
 1977  12
                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_enumConstant1343); if (state.failed) return;
 1978  12
                         if ( state.backtracking==0 ) {
 1979  12
                                     getModeller().addEnumerationLiteral((name!=null?name.getText():null));
 1980  
                                 }
 1981  
                         // org/argouml/language/java/reveng/Java.g:616:9: ( arguments )?
 1982  12
                         int alt30=2;
 1983  12
                         int LA30_0 = input.LA(1);
 1984  12
                         if ( (LA30_0==34) ) {
 1985  6
                                 alt30=1;
 1986  
                         }
 1987  12
                         switch (alt30) {
 1988  
                                 case 1 :
 1989  
                                         // org/argouml/language/java/reveng/Java.g:616:10: arguments
 1990  
                                         {
 1991  6
                                         pushFollow(FOLLOW_arguments_in_enumConstant1382);
 1992  6
                                         arguments();
 1993  6
                                         state._fsp--;
 1994  6
                                         if (state.failed) return;
 1995  
                                         }
 1996  
                                         break;
 1997  
 
 1998  
                         }
 1999  
 
 2000  
                         // org/argouml/language/java/reveng/Java.g:617:9: ( classBody )?
 2001  12
                         int alt31=2;
 2002  12
                         int LA31_0 = input.LA(1);
 2003  12
                         if ( (LA31_0==110) ) {
 2004  0
                                 alt31=1;
 2005  
                         }
 2006  12
                         switch (alt31) {
 2007  
                                 case 1 :
 2008  
                                         // org/argouml/language/java/reveng/Java.g:617:10: classBody
 2009  
                                         {
 2010  0
                                         pushFollow(FOLLOW_classBody_in_enumConstant1395);
 2011  0
                                         classBody();
 2012  0
                                         state._fsp--;
 2013  0
                                         if (state.failed) return;
 2014  
                                         }
 2015  
                                         break;
 2016  
 
 2017  
                         }
 2018  
 
 2019  
                         }
 2020  
 
 2021  
                 }
 2022  0
                 catch (RecognitionException re) {
 2023  0
                         reportError(re);
 2024  0
                         recover(input,re);
 2025  
                 }
 2026  
                 finally {
 2027  
                         // do for sure before leaving
 2028  12
                         if ( state.backtracking>0 ) { memoize(input, 17, enumConstant_StartIndex); }
 2029  
 
 2030  0
                 }
 2031  12
         }
 2032  
         // $ANTLR end "enumConstant"
 2033  
 
 2034  
 
 2035  
 
 2036  
         // $ANTLR start "enumBodyDeclarations"
 2037  
         // org/argouml/language/java/reveng/Java.g:620:1: enumBodyDeclarations : ';' ( classBodyDeclaration )* ;
 2038  
         public final void enumBodyDeclarations() throws RecognitionException {
 2039  2
                 int enumBodyDeclarations_StartIndex = input.index();
 2040  
 
 2041  
                 try {
 2042  2
                         if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return; }
 2043  
 
 2044  
                         // org/argouml/language/java/reveng/Java.g:621:5: ( ';' ( classBodyDeclaration )* )
 2045  
                         // org/argouml/language/java/reveng/Java.g:621:9: ';' ( classBodyDeclaration )*
 2046  
                         {
 2047  2
                         match(input,50,FOLLOW_50_in_enumBodyDeclarations1416); if (state.failed) return;
 2048  
                         // org/argouml/language/java/reveng/Java.g:621:13: ( classBodyDeclaration )*
 2049  
                         loop32:
 2050  
                         while (true) {
 2051  10
                                 int alt32=2;
 2052  10
                                 int LA32_0 = input.LA(1);
 2053  10
                                 if ( (LA32_0==ENUM||LA32_0==Identifier||(LA32_0 >= 50 && LA32_0 <= 51)||LA32_0==56||(LA32_0 >= 61 && LA32_0 <= 62)||LA32_0==64||(LA32_0 >= 67 && LA32_0 <= 68)||LA32_0==72||LA32_0==76||LA32_0==78||(LA32_0 >= 84 && LA32_0 <= 87)||(LA32_0 >= 91 && LA32_0 <= 93)||(LA32_0 >= 95 && LA32_0 <= 97)||LA32_0==100||LA32_0==104||(LA32_0 >= 107 && LA32_0 <= 108)||LA32_0==110) ) {
 2054  8
                                         alt32=1;
 2055  
                                 }
 2056  
 
 2057  10
                                 switch (alt32) {
 2058  
                                 case 1 :
 2059  
                                         // org/argouml/language/java/reveng/Java.g:621:14: classBodyDeclaration
 2060  
                                         {
 2061  8
                                         pushFollow(FOLLOW_classBodyDeclaration_in_enumBodyDeclarations1419);
 2062  8
                                         classBodyDeclaration();
 2063  8
                                         state._fsp--;
 2064  8
                                         if (state.failed) return;
 2065  
                                         }
 2066  
                                         break;
 2067  
 
 2068  
                                 default :
 2069  2
                                         break loop32;
 2070  
                                 }
 2071  8
                         }
 2072  
 
 2073  
                         }
 2074  
 
 2075  
                 }
 2076  0
                 catch (RecognitionException re) {
 2077  0
                         reportError(re);
 2078  0
                         recover(input,re);
 2079  
                 }
 2080  
                 finally {
 2081  
                         // do for sure before leaving
 2082  2
                         if ( state.backtracking>0 ) { memoize(input, 18, enumBodyDeclarations_StartIndex); }
 2083  
 
 2084  0
                 }
 2085  2
         }
 2086  
         // $ANTLR end "enumBodyDeclarations"
 2087  
 
 2088  
 
 2089  
 
 2090  
         // $ANTLR start "interfaceDeclaration"
 2091  
         // org/argouml/language/java/reveng/Java.g:625:1: interfaceDeclaration[String javadoc, short modifiers] : ( normalInterfaceDeclaration[javadoc, modifiers] | annotationTypeDeclaration[javadoc, modifiers] );
 2092  
         public final void interfaceDeclaration(String javadoc, short modifiers) throws RecognitionException {
 2093  4
                 int interfaceDeclaration_StartIndex = input.index();
 2094  
 
 2095  
                 try {
 2096  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return; }
 2097  
 
 2098  
                         // org/argouml/language/java/reveng/Java.g:626:5: ( normalInterfaceDeclaration[javadoc, modifiers] | annotationTypeDeclaration[javadoc, modifiers] )
 2099  4
                         int alt33=2;
 2100  4
                         int LA33_0 = input.LA(1);
 2101  4
                         if ( (LA33_0==85) ) {
 2102  4
                                 alt33=1;
 2103  
                         }
 2104  0
                         else if ( (LA33_0==56) ) {
 2105  0
                                 alt33=2;
 2106  
                         }
 2107  
 
 2108  
                         else {
 2109  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 2110  0
                                 NoViableAltException nvae =
 2111  
                                         new NoViableAltException("", 33, 0, input);
 2112  0
                                 throw nvae;
 2113  
                         }
 2114  
 
 2115  4
                         switch (alt33) {
 2116  
                                 case 1 :
 2117  
                                         // org/argouml/language/java/reveng/Java.g:626:9: normalInterfaceDeclaration[javadoc, modifiers]
 2118  
                                         {
 2119  4
                                         pushFollow(FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration1446);
 2120  4
                                         normalInterfaceDeclaration(javadoc, modifiers);
 2121  4
                                         state._fsp--;
 2122  4
                                         if (state.failed) return;
 2123  
                                         }
 2124  
                                         break;
 2125  
                                 case 2 :
 2126  
                                         // org/argouml/language/java/reveng/Java.g:627:9: annotationTypeDeclaration[javadoc, modifiers]
 2127  
                                         {
 2128  0
                                         pushFollow(FOLLOW_annotationTypeDeclaration_in_interfaceDeclaration1457);
 2129  0
                                         annotationTypeDeclaration(javadoc, modifiers);
 2130  0
                                         state._fsp--;
 2131  0
                                         if (state.failed) return;
 2132  
                                         }
 2133  
                                         break;
 2134  
 
 2135  
                         }
 2136  
                 }
 2137  0
                 catch (RecognitionException re) {
 2138  0
                         reportError(re);
 2139  0
                         recover(input,re);
 2140  
                 }
 2141  
                 finally {
 2142  
                         // do for sure before leaving
 2143  4
                         if ( state.backtracking>0 ) { memoize(input, 19, interfaceDeclaration_StartIndex); }
 2144  
 
 2145  0
                 }
 2146  4
         }
 2147  
         // $ANTLR end "interfaceDeclaration"
 2148  
 
 2149  
 
 2150  
 
 2151  
         // $ANTLR start "normalInterfaceDeclaration"
 2152  
         // org/argouml/language/java/reveng/Java.g:630:1: normalInterfaceDeclaration[String javadoc, short modifiers] : 'interface' interfaceName= Identifier (tparam= typeParameters )? ( 'extends' ie= typeList )? interfaceBody ;
 2153  
         public final void normalInterfaceDeclaration(String javadoc, short modifiers) throws RecognitionException {
 2154  4
                 int normalInterfaceDeclaration_StartIndex = input.index();
 2155  
 
 2156  4
                 Token interfaceName=null;
 2157  4
                 List<String> tparam =null;
 2158  4
                 List<String> ie =null;
 2159  
 
 2160  
 
 2161  4
                         List<String> names = new ArrayList<String>();
 2162  
                     
 2163  
                 try {
 2164  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 20) ) { return; }
 2165  
 
 2166  
                         // org/argouml/language/java/reveng/Java.g:634:5: ( 'interface' interfaceName= Identifier (tparam= typeParameters )? ( 'extends' ie= typeList )? interfaceBody )
 2167  
                         // org/argouml/language/java/reveng/Java.g:634:9: 'interface' interfaceName= Identifier (tparam= typeParameters )? ( 'extends' ie= typeList )? interfaceBody
 2168  
                         {
 2169  4
                         match(input,85,FOLLOW_85_in_normalInterfaceDeclaration1486); if (state.failed) return;
 2170  4
                         interfaceName=(Token)match(input,Identifier,FOLLOW_Identifier_in_normalInterfaceDeclaration1490); if (state.failed) return;
 2171  
                         // org/argouml/language/java/reveng/Java.g:634:46: (tparam= typeParameters )?
 2172  4
                         int alt34=2;
 2173  4
                         int LA34_0 = input.LA(1);
 2174  4
                         if ( (LA34_0==51) ) {
 2175  0
                                 alt34=1;
 2176  
                         }
 2177  4
                         switch (alt34) {
 2178  
                                 case 1 :
 2179  
                                         // org/argouml/language/java/reveng/Java.g:634:47: tparam= typeParameters
 2180  
                                         {
 2181  0
                                         pushFollow(FOLLOW_typeParameters_in_normalInterfaceDeclaration1495);
 2182  0
                                         tparam=typeParameters();
 2183  0
                                         state._fsp--;
 2184  0
                                         if (state.failed) return;
 2185  
                                         }
 2186  
                                         break;
 2187  
 
 2188  
                         }
 2189  
 
 2190  
                         // org/argouml/language/java/reveng/Java.g:635:9: ( 'extends' ie= typeList )?
 2191  4
                         int alt35=2;
 2192  4
                         int LA35_0 = input.LA(1);
 2193  4
                         if ( (LA35_0==74) ) {
 2194  4
                                 alt35=1;
 2195  
                         }
 2196  4
                         switch (alt35) {
 2197  
                                 case 1 :
 2198  
                                         // org/argouml/language/java/reveng/Java.g:635:10: 'extends' ie= typeList
 2199  
                                         {
 2200  4
                                         match(input,74,FOLLOW_74_in_normalInterfaceDeclaration1508); if (state.failed) return;
 2201  4
                                         pushFollow(FOLLOW_typeList_in_normalInterfaceDeclaration1512);
 2202  4
                                         ie=typeList();
 2203  4
                                         state._fsp--;
 2204  4
                                         if (state.failed) return;
 2205  4
                                         if ( state.backtracking==0 ) { names = ie; }
 2206  
                                         }
 2207  
                                         break;
 2208  
 
 2209  
                         }
 2210  
 
 2211  4
                         if ( state.backtracking==0 ) {
 2212  4
                                     getModeller().addInterface((interfaceName!=null?interfaceName.getText():null), modifiers,
 2213  
                                         tparam, names, javadoc, (parserMode == MODE_IMPORT_PASS2));
 2214  
                                 }
 2215  4
                         pushFollow(FOLLOW_interfaceBody_in_normalInterfaceDeclaration1546);
 2216  4
                         interfaceBody();
 2217  4
                         state._fsp--;
 2218  4
                         if (state.failed) return;
 2219  4
                         if ( state.backtracking==0 ) {
 2220  4
                                     getModeller().popClassifier();
 2221  
                                 }
 2222  
                         }
 2223  
 
 2224  
                 }
 2225  0
                 catch (RecognitionException re) {
 2226  0
                         reportError(re);
 2227  0
                         recover(input,re);
 2228  
                 }
 2229  
                 finally {
 2230  
                         // do for sure before leaving
 2231  4
                         if ( state.backtracking>0 ) { memoize(input, 20, normalInterfaceDeclaration_StartIndex); }
 2232  
 
 2233  0
                 }
 2234  4
         }
 2235  
         // $ANTLR end "normalInterfaceDeclaration"
 2236  
 
 2237  
 
 2238  
 
 2239  
         // $ANTLR start "typeList"
 2240  
         // org/argouml/language/java/reveng/Java.g:647:1: typeList returns [List<String> names = new ArrayList<String>()] : n= type ( ',' n= type )* ;
 2241  
         public final List<String> typeList() throws RecognitionException {
 2242  16
                 List<String> names =  new ArrayList<String>();
 2243  
 
 2244  16
                 int typeList_StartIndex = input.index();
 2245  
 
 2246  16
                 String n =null;
 2247  
 
 2248  
                 try {
 2249  16
                         if ( state.backtracking>0 && alreadyParsedRule(input, 21) ) { return names; }
 2250  
 
 2251  
                         // org/argouml/language/java/reveng/Java.g:648:5: (n= type ( ',' n= type )* )
 2252  
                         // org/argouml/language/java/reveng/Java.g:648:9: n= type ( ',' n= type )*
 2253  
                         {
 2254  16
                         pushFollow(FOLLOW_type_in_typeList1581);
 2255  16
                         n=type();
 2256  16
                         state._fsp--;
 2257  16
                         if (state.failed) return names;
 2258  16
                         if ( state.backtracking==0 ) { names.add(n); }
 2259  
                         // org/argouml/language/java/reveng/Java.g:649:9: ( ',' n= type )*
 2260  
                         loop36:
 2261  
                         while (true) {
 2262  16
                                 int alt36=2;
 2263  16
                                 int LA36_0 = input.LA(1);
 2264  16
                                 if ( (LA36_0==41) ) {
 2265  0
                                         alt36=1;
 2266  
                                 }
 2267  
 
 2268  16
                                 switch (alt36) {
 2269  
                                 case 1 :
 2270  
                                         // org/argouml/language/java/reveng/Java.g:649:11: ',' n= type
 2271  
                                         {
 2272  0
                                         match(input,41,FOLLOW_41_in_typeList1601); if (state.failed) return names;
 2273  0
                                         pushFollow(FOLLOW_type_in_typeList1605);
 2274  0
                                         n=type();
 2275  0
                                         state._fsp--;
 2276  0
                                         if (state.failed) return names;
 2277  0
                                         if ( state.backtracking==0 ) { names.add(n); }
 2278  
                                         }
 2279  
                                         break;
 2280  
 
 2281  
                                 default :
 2282  16
                                         break loop36;
 2283  
                                 }
 2284  0
                         }
 2285  
 
 2286  
                         }
 2287  
 
 2288  
                 }
 2289  0
                 catch (RecognitionException re) {
 2290  0
                         reportError(re);
 2291  0
                         recover(input,re);
 2292  
                 }
 2293  
                 finally {
 2294  
                         // do for sure before leaving
 2295  16
                         if ( state.backtracking>0 ) { memoize(input, 21, typeList_StartIndex); }
 2296  
 
 2297  0
                 }
 2298  16
                 return names;
 2299  
         }
 2300  
         // $ANTLR end "typeList"
 2301  
 
 2302  
 
 2303  
 
 2304  
         // $ANTLR start "classBody"
 2305  
         // org/argouml/language/java/reveng/Java.g:654:1: classBody : '{' ( classBodyDeclaration )* '}' ;
 2306  
         public final void classBody() throws RecognitionException {
 2307  14
                 int classBody_StartIndex = input.index();
 2308  
 
 2309  
                 try {
 2310  14
                         if ( state.backtracking>0 && alreadyParsedRule(input, 22) ) { return; }
 2311  
 
 2312  
                         // org/argouml/language/java/reveng/Java.g:655:5: ( '{' ( classBodyDeclaration )* '}' )
 2313  
                         // org/argouml/language/java/reveng/Java.g:655:9: '{' ( classBodyDeclaration )* '}'
 2314  
                         {
 2315  14
                         match(input,110,FOLLOW_110_in_classBody1638); if (state.failed) return;
 2316  
                         // org/argouml/language/java/reveng/Java.g:655:13: ( classBodyDeclaration )*
 2317  
                         loop37:
 2318  
                         while (true) {
 2319  89
                                 int alt37=2;
 2320  89
                                 int LA37_0 = input.LA(1);
 2321  89
                                 if ( (LA37_0==ENUM||LA37_0==Identifier||(LA37_0 >= 50 && LA37_0 <= 51)||LA37_0==56||(LA37_0 >= 61 && LA37_0 <= 62)||LA37_0==64||(LA37_0 >= 67 && LA37_0 <= 68)||LA37_0==72||LA37_0==76||LA37_0==78||(LA37_0 >= 84 && LA37_0 <= 87)||(LA37_0 >= 91 && LA37_0 <= 93)||(LA37_0 >= 95 && LA37_0 <= 97)||LA37_0==100||LA37_0==104||(LA37_0 >= 107 && LA37_0 <= 108)||LA37_0==110) ) {
 2322  75
                                         alt37=1;
 2323  
                                 }
 2324  
 
 2325  89
                                 switch (alt37) {
 2326  
                                 case 1 :
 2327  
                                         // org/argouml/language/java/reveng/Java.g:655:13: classBodyDeclaration
 2328  
                                         {
 2329  75
                                         pushFollow(FOLLOW_classBodyDeclaration_in_classBody1640);
 2330  75
                                         classBodyDeclaration();
 2331  75
                                         state._fsp--;
 2332  75
                                         if (state.failed) return;
 2333  
                                         }
 2334  
                                         break;
 2335  
 
 2336  
                                 default :
 2337  14
                                         break loop37;
 2338  
                                 }
 2339  75
                         }
 2340  
 
 2341  14
                         match(input,114,FOLLOW_114_in_classBody1643); if (state.failed) return;
 2342  
                         }
 2343  
 
 2344  
                 }
 2345  0
                 catch (RecognitionException re) {
 2346  0
                         reportError(re);
 2347  0
                         recover(input,re);
 2348  
                 }
 2349  
                 finally {
 2350  
                         // do for sure before leaving
 2351  14
                         if ( state.backtracking>0 ) { memoize(input, 22, classBody_StartIndex); }
 2352  
 
 2353  0
                 }
 2354  14
         }
 2355  
         // $ANTLR end "classBody"
 2356  
 
 2357  
 
 2358  
 
 2359  
         // $ANTLR start "interfaceBody"
 2360  
         // org/argouml/language/java/reveng/Java.g:658:1: interfaceBody : '{' ( interfaceBodyDeclaration )* '}' ;
 2361  
         public final void interfaceBody() throws RecognitionException {
 2362  4
                 int interfaceBody_StartIndex = input.index();
 2363  
 
 2364  
                 try {
 2365  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 23) ) { return; }
 2366  
 
 2367  
                         // org/argouml/language/java/reveng/Java.g:659:5: ( '{' ( interfaceBodyDeclaration )* '}' )
 2368  
                         // org/argouml/language/java/reveng/Java.g:659:9: '{' ( interfaceBodyDeclaration )* '}'
 2369  
                         {
 2370  4
                         match(input,110,FOLLOW_110_in_interfaceBody1666); if (state.failed) return;
 2371  
                         // org/argouml/language/java/reveng/Java.g:659:13: ( interfaceBodyDeclaration )*
 2372  
                         loop38:
 2373  
                         while (true) {
 2374  12
                                 int alt38=2;
 2375  12
                                 int LA38_0 = input.LA(1);
 2376  12
                                 if ( (LA38_0==ENUM||LA38_0==Identifier||(LA38_0 >= 50 && LA38_0 <= 51)||LA38_0==56||(LA38_0 >= 61 && LA38_0 <= 62)||LA38_0==64||(LA38_0 >= 67 && LA38_0 <= 68)||LA38_0==72||LA38_0==76||LA38_0==78||(LA38_0 >= 84 && LA38_0 <= 87)||(LA38_0 >= 91 && LA38_0 <= 93)||(LA38_0 >= 95 && LA38_0 <= 97)||LA38_0==100||LA38_0==104||(LA38_0 >= 107 && LA38_0 <= 108)) ) {
 2377  8
                                         alt38=1;
 2378  
                                 }
 2379  
 
 2380  12
                                 switch (alt38) {
 2381  
                                 case 1 :
 2382  
                                         // org/argouml/language/java/reveng/Java.g:659:13: interfaceBodyDeclaration
 2383  
                                         {
 2384  8
                                         pushFollow(FOLLOW_interfaceBodyDeclaration_in_interfaceBody1668);
 2385  8
                                         interfaceBodyDeclaration();
 2386  8
                                         state._fsp--;
 2387  8
                                         if (state.failed) return;
 2388  
                                         }
 2389  
                                         break;
 2390  
 
 2391  
                                 default :
 2392  4
                                         break loop38;
 2393  
                                 }
 2394  8
                         }
 2395  
 
 2396  4
                         match(input,114,FOLLOW_114_in_interfaceBody1671); if (state.failed) return;
 2397  
                         }
 2398  
 
 2399  
                 }
 2400  0
                 catch (RecognitionException re) {
 2401  0
                         reportError(re);
 2402  0
                         recover(input,re);
 2403  
                 }
 2404  
                 finally {
 2405  
                         // do for sure before leaving
 2406  4
                         if ( state.backtracking>0 ) { memoize(input, 23, interfaceBody_StartIndex); }
 2407  
 
 2408  0
                 }
 2409  4
         }
 2410  
         // $ANTLR end "interfaceBody"
 2411  
 
 2412  
 
 2413  
 
 2414  
         // $ANTLR start "classBodyDeclaration"
 2415  
         // org/argouml/language/java/reveng/Java.g:662:1: classBodyDeclaration : ( ';' | ( 'static' )? block |m= modifiers memberDecl[m] );
 2416  
         public final void classBodyDeclaration() throws RecognitionException {
 2417  83
                 int classBodyDeclaration_StartIndex = input.index();
 2418  
 
 2419  83
                 short m =0;
 2420  
 
 2421  
                 try {
 2422  83
                         if ( state.backtracking>0 && alreadyParsedRule(input, 24) ) { return; }
 2423  
 
 2424  
                         // org/argouml/language/java/reveng/Java.g:663:5: ( ';' | ( 'static' )? block |m= modifiers memberDecl[m] )
 2425  83
                         int alt40=3;
 2426  83
                         switch ( input.LA(1) ) {
 2427  
                         case 50:
 2428  
                                 {
 2429  2
                                 alt40=1;
 2430  
                                 }
 2431  2
                                 break;
 2432  
                         case 96:
 2433  
                                 {
 2434  0
                                 int LA40_2 = input.LA(2);
 2435  0
                                 if ( (LA40_2==110) ) {
 2436  0
                                         alt40=2;
 2437  
                                 }
 2438  0
                                 else if ( (LA40_2==ENUM||LA40_2==Identifier||LA40_2==51||LA40_2==56||(LA40_2 >= 61 && LA40_2 <= 62)||LA40_2==64||(LA40_2 >= 67 && LA40_2 <= 68)||LA40_2==72||LA40_2==76||LA40_2==78||(LA40_2 >= 84 && LA40_2 <= 87)||(LA40_2 >= 91 && LA40_2 <= 93)||(LA40_2 >= 95 && LA40_2 <= 97)||LA40_2==100||LA40_2==104||(LA40_2 >= 107 && LA40_2 <= 108)) ) {
 2439  0
                                         alt40=3;
 2440  
                                 }
 2441  
 
 2442  
                                 else {
 2443  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 2444  0
                                         int nvaeMark = input.mark();
 2445  
                                         try {
 2446  0
                                                 input.consume();
 2447  0
                                                 NoViableAltException nvae =
 2448  
                                                         new NoViableAltException("", 40, 2, input);
 2449  0
                                                 throw nvae;
 2450  
                                         } finally {
 2451  0
                                                 input.rewind(nvaeMark);
 2452  0
                                         }
 2453  
                                 }
 2454  
 
 2455  
                                 }
 2456  0
                                 break;
 2457  
                         case 110:
 2458  
                                 {
 2459  0
                                 alt40=2;
 2460  
                                 }
 2461  0
                                 break;
 2462  
                         case ENUM:
 2463  
                         case Identifier:
 2464  
                         case 51:
 2465  
                         case 56:
 2466  
                         case 61:
 2467  
                         case 62:
 2468  
                         case 64:
 2469  
                         case 67:
 2470  
                         case 68:
 2471  
                         case 72:
 2472  
                         case 76:
 2473  
                         case 78:
 2474  
                         case 84:
 2475  
                         case 85:
 2476  
                         case 86:
 2477  
                         case 87:
 2478  
                         case 91:
 2479  
                         case 92:
 2480  
                         case 93:
 2481  
                         case 95:
 2482  
                         case 97:
 2483  
                         case 100:
 2484  
                         case 104:
 2485  
                         case 107:
 2486  
                         case 108:
 2487  
                                 {
 2488  81
                                 alt40=3;
 2489  
                                 }
 2490  81
                                 break;
 2491  
                         default:
 2492  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 2493  0
                                 NoViableAltException nvae =
 2494  
                                         new NoViableAltException("", 40, 0, input);
 2495  0
                                 throw nvae;
 2496  
                         }
 2497  83
                         switch (alt40) {
 2498  
                                 case 1 :
 2499  
                                         // org/argouml/language/java/reveng/Java.g:663:9: ';'
 2500  
                                         {
 2501  2
                                         match(input,50,FOLLOW_50_in_classBodyDeclaration1690); if (state.failed) return;
 2502  
                                         }
 2503  
                                         break;
 2504  
                                 case 2 :
 2505  
                                         // org/argouml/language/java/reveng/Java.g:664:9: ( 'static' )? block
 2506  
                                         {
 2507  
                                         // org/argouml/language/java/reveng/Java.g:664:9: ( 'static' )?
 2508  0
                                         int alt39=2;
 2509  0
                                         int LA39_0 = input.LA(1);
 2510  0
                                         if ( (LA39_0==96) ) {
 2511  0
                                                 alt39=1;
 2512  
                                         }
 2513  0
                                         switch (alt39) {
 2514  
                                                 case 1 :
 2515  
                                                         // org/argouml/language/java/reveng/Java.g:664:9: 'static'
 2516  
                                                         {
 2517  0
                                                         match(input,96,FOLLOW_96_in_classBodyDeclaration1700); if (state.failed) return;
 2518  
                                                         }
 2519  
                                                         break;
 2520  
 
 2521  
                                         }
 2522  
 
 2523  0
                                         pushFollow(FOLLOW_block_in_classBodyDeclaration1703);
 2524  0
                                         block();
 2525  0
                                         state._fsp--;
 2526  0
                                         if (state.failed) return;
 2527  
                                         }
 2528  0
                                         break;
 2529  
                                 case 3 :
 2530  
                                         // org/argouml/language/java/reveng/Java.g:665:9: m= modifiers memberDecl[m]
 2531  
                                         {
 2532  81
                                         pushFollow(FOLLOW_modifiers_in_classBodyDeclaration1715);
 2533  81
                                         m=modifiers();
 2534  81
                                         state._fsp--;
 2535  81
                                         if (state.failed) return;
 2536  81
                                         pushFollow(FOLLOW_memberDecl_in_classBodyDeclaration1717);
 2537  81
                                         memberDecl(m);
 2538  81
                                         state._fsp--;
 2539  81
                                         if (state.failed) return;
 2540  
                                         }
 2541  
                                         break;
 2542  
 
 2543  
                         }
 2544  
                 }
 2545  0
                 catch (RecognitionException re) {
 2546  0
                         reportError(re);
 2547  0
                         recover(input,re);
 2548  
                 }
 2549  
                 finally {
 2550  
                         // do for sure before leaving
 2551  83
                         if ( state.backtracking>0 ) { memoize(input, 24, classBodyDeclaration_StartIndex); }
 2552  
 
 2553  0
                 }
 2554  83
         }
 2555  
         // $ANTLR end "classBodyDeclaration"
 2556  
 
 2557  
 
 2558  
 
 2559  
         // $ANTLR start "memberDecl"
 2560  
         // org/argouml/language/java/reveng/Java.g:668:1: memberDecl[short modifiers] : ( genericMethodOrConstructorDecl[modifiers] | memberDeclaration[modifiers] | 'void' name= Identifier voidMethodDeclaratorRest[$name.text, modifiers] |name= Identifier constructorDeclaratorRest[$name.text, modifiers] | interfaceDeclaration[getJavadocComment(), modifiers] | classDeclaration[getJavadocComment(), modifiers] );
 2561  
         public final void memberDecl(short modifiers) throws RecognitionException {
 2562  81
                 int memberDecl_StartIndex = input.index();
 2563  
 
 2564  81
                 Token name=null;
 2565  
 
 2566  
                 try {
 2567  81
                         if ( state.backtracking>0 && alreadyParsedRule(input, 25) ) { return; }
 2568  
 
 2569  
                         // org/argouml/language/java/reveng/Java.g:669:5: ( genericMethodOrConstructorDecl[modifiers] | memberDeclaration[modifiers] | 'void' name= Identifier voidMethodDeclaratorRest[$name.text, modifiers] |name= Identifier constructorDeclaratorRest[$name.text, modifiers] | interfaceDeclaration[getJavadocComment(), modifiers] | classDeclaration[getJavadocComment(), modifiers] )
 2570  81
                         int alt41=6;
 2571  81
                         switch ( input.LA(1) ) {
 2572  
                         case 51:
 2573  
                                 {
 2574  0
                                 alt41=1;
 2575  
                                 }
 2576  0
                                 break;
 2577  
                         case Identifier:
 2578  
                                 {
 2579  47
                                 int LA41_2 = input.LA(2);
 2580  47
                                 if ( (LA41_2==Identifier||LA41_2==45||LA41_2==51||LA41_2==57) ) {
 2581  33
                                         alt41=2;
 2582  
                                 }
 2583  14
                                 else if ( (LA41_2==34) ) {
 2584  14
                                         alt41=4;
 2585  
                                 }
 2586  
 
 2587  
                                 else {
 2588  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 2589  0
                                         int nvaeMark = input.mark();
 2590  
                                         try {
 2591  0
                                                 input.consume();
 2592  0
                                                 NoViableAltException nvae =
 2593  
                                                         new NoViableAltException("", 41, 2, input);
 2594  0
                                                 throw nvae;
 2595  
                                         } finally {
 2596  0
                                                 input.rewind(nvaeMark);
 2597  0
                                         }
 2598  
                                 }
 2599  
 
 2600  
                                 }
 2601  47
                                 break;
 2602  
                         case 62:
 2603  
                         case 64:
 2604  
                         case 67:
 2605  
                         case 72:
 2606  
                         case 78:
 2607  
                         case 84:
 2608  
                         case 86:
 2609  
                         case 95:
 2610  
                                 {
 2611  11
                                 alt41=2;
 2612  
                                 }
 2613  11
                                 break;
 2614  
                         case 107:
 2615  
                                 {
 2616  19
                                 alt41=3;
 2617  
                                 }
 2618  19
                                 break;
 2619  
                         case 56:
 2620  
                         case 85:
 2621  
                                 {
 2622  0
                                 alt41=5;
 2623  
                                 }
 2624  0
                                 break;
 2625  
                         case ENUM:
 2626  
                         case 68:
 2627  
                                 {
 2628  4
                                 alt41=6;
 2629  
                                 }
 2630  4
                                 break;
 2631  
                         default:
 2632  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 2633  0
                                 NoViableAltException nvae =
 2634  
                                         new NoViableAltException("", 41, 0, input);
 2635  0
                                 throw nvae;
 2636  
                         }
 2637  81
                         switch (alt41) {
 2638  
                                 case 1 :
 2639  
                                         // org/argouml/language/java/reveng/Java.g:669:9: genericMethodOrConstructorDecl[modifiers]
 2640  
                                         {
 2641  0
                                         pushFollow(FOLLOW_genericMethodOrConstructorDecl_in_memberDecl1742);
 2642  0
                                         genericMethodOrConstructorDecl(modifiers);
 2643  0
                                         state._fsp--;
 2644  0
                                         if (state.failed) return;
 2645  
                                         }
 2646  
                                         break;
 2647  
                                 case 2 :
 2648  
                                         // org/argouml/language/java/reveng/Java.g:670:9: memberDeclaration[modifiers]
 2649  
                                         {
 2650  44
                                         pushFollow(FOLLOW_memberDeclaration_in_memberDecl1753);
 2651  44
                                         memberDeclaration(modifiers);
 2652  44
                                         state._fsp--;
 2653  44
                                         if (state.failed) return;
 2654  
                                         }
 2655  
                                         break;
 2656  
                                 case 3 :
 2657  
                                         // org/argouml/language/java/reveng/Java.g:671:9: 'void' name= Identifier voidMethodDeclaratorRest[$name.text, modifiers]
 2658  
                                         {
 2659  19
                                         match(input,107,FOLLOW_107_in_memberDecl1764); if (state.failed) return;
 2660  19
                                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_memberDecl1768); if (state.failed) return;
 2661  19
                                         pushFollow(FOLLOW_voidMethodDeclaratorRest_in_memberDecl1770);
 2662  19
                                         voidMethodDeclaratorRest((name!=null?name.getText():null), modifiers);
 2663  19
                                         state._fsp--;
 2664  19
                                         if (state.failed) return;
 2665  
                                         }
 2666  
                                         break;
 2667  
                                 case 4 :
 2668  
                                         // org/argouml/language/java/reveng/Java.g:672:9: name= Identifier constructorDeclaratorRest[$name.text, modifiers]
 2669  
                                         {
 2670  14
                                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_memberDecl1783); if (state.failed) return;
 2671  14
                                         pushFollow(FOLLOW_constructorDeclaratorRest_in_memberDecl1785);
 2672  14
                                         constructorDeclaratorRest((name!=null?name.getText():null), modifiers);
 2673  14
                                         state._fsp--;
 2674  14
                                         if (state.failed) return;
 2675  
                                         }
 2676  
                                         break;
 2677  
                                 case 5 :
 2678  
                                         // org/argouml/language/java/reveng/Java.g:673:9: interfaceDeclaration[getJavadocComment(), modifiers]
 2679  
                                         {
 2680  0
                                         pushFollow(FOLLOW_interfaceDeclaration_in_memberDecl1796);
 2681  0
                                         interfaceDeclaration(getJavadocComment(), modifiers);
 2682  0
                                         state._fsp--;
 2683  0
                                         if (state.failed) return;
 2684  
                                         }
 2685  
                                         break;
 2686  
                                 case 6 :
 2687  
                                         // org/argouml/language/java/reveng/Java.g:674:9: classDeclaration[getJavadocComment(), modifiers]
 2688  
                                         {
 2689  4
                                         pushFollow(FOLLOW_classDeclaration_in_memberDecl1807);
 2690  4
                                         classDeclaration(getJavadocComment(), modifiers);
 2691  4
                                         state._fsp--;
 2692  4
                                         if (state.failed) return;
 2693  
                                         }
 2694  
                                         break;
 2695  
 
 2696  
                         }
 2697  
                 }
 2698  0
                 catch (RecognitionException re) {
 2699  0
                         reportError(re);
 2700  0
                         recover(input,re);
 2701  
                 }
 2702  
                 finally {
 2703  
                         // do for sure before leaving
 2704  81
                         if ( state.backtracking>0 ) { memoize(input, 25, memberDecl_StartIndex); }
 2705  
 
 2706  0
                 }
 2707  81
         }
 2708  
         // $ANTLR end "memberDecl"
 2709  
 
 2710  
 
 2711  
 
 2712  
         // $ANTLR start "memberDeclaration"
 2713  
         // org/argouml/language/java/reveng/Java.g:677:1: memberDeclaration[short modifiers] : t= type ( methodDeclaration[modifiers, null, t] | fieldDeclaration[modifiers, t] ) ;
 2714  
         public final void memberDeclaration(short modifiers) throws RecognitionException {
 2715  44
                 int memberDeclaration_StartIndex = input.index();
 2716  
 
 2717  44
                 String t =null;
 2718  
 
 2719  
                 try {
 2720  44
                         if ( state.backtracking>0 && alreadyParsedRule(input, 26) ) { return; }
 2721  
 
 2722  
                         // org/argouml/language/java/reveng/Java.g:678:5: (t= type ( methodDeclaration[modifiers, null, t] | fieldDeclaration[modifiers, t] ) )
 2723  
                         // org/argouml/language/java/reveng/Java.g:678:9: t= type ( methodDeclaration[modifiers, null, t] | fieldDeclaration[modifiers, t] )
 2724  
                         {
 2725  44
                         pushFollow(FOLLOW_type_in_memberDeclaration1834);
 2726  44
                         t=type();
 2727  44
                         state._fsp--;
 2728  44
                         if (state.failed) return;
 2729  
                         // org/argouml/language/java/reveng/Java.g:679:9: ( methodDeclaration[modifiers, null, t] | fieldDeclaration[modifiers, t] )
 2730  44
                         int alt42=2;
 2731  44
                         int LA42_0 = input.LA(1);
 2732  44
                         if ( (LA42_0==Identifier) ) {
 2733  44
                                 int LA42_1 = input.LA(2);
 2734  44
                                 if ( (LA42_1==34) ) {
 2735  11
                                         alt42=1;
 2736  
                                 }
 2737  33
                                 else if ( (LA42_1==41||LA42_1==50||LA42_1==52||LA42_1==57) ) {
 2738  33
                                         alt42=2;
 2739  
                                 }
 2740  
 
 2741  
                                 else {
 2742  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 2743  0
                                         int nvaeMark = input.mark();
 2744  
                                         try {
 2745  0
                                                 input.consume();
 2746  0
                                                 NoViableAltException nvae =
 2747  
                                                         new NoViableAltException("", 42, 1, input);
 2748  0
                                                 throw nvae;
 2749  
                                         } finally {
 2750  0
                                                 input.rewind(nvaeMark);
 2751  0
                                         }
 2752  
                                 }
 2753  
 
 2754  44
                         }
 2755  
 
 2756  
                         else {
 2757  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 2758  0
                                 NoViableAltException nvae =
 2759  
                                         new NoViableAltException("", 42, 0, input);
 2760  0
                                 throw nvae;
 2761  
                         }
 2762  
 
 2763  44
                         switch (alt42) {
 2764  
                                 case 1 :
 2765  
                                         // org/argouml/language/java/reveng/Java.g:679:13: methodDeclaration[modifiers, null, t]
 2766  
                                         {
 2767  11
                                         pushFollow(FOLLOW_methodDeclaration_in_memberDeclaration1848);
 2768  11
                                         methodDeclaration(modifiers, null, t);
 2769  11
                                         state._fsp--;
 2770  11
                                         if (state.failed) return;
 2771  
                                         }
 2772  
                                         break;
 2773  
                                 case 2 :
 2774  
                                         // org/argouml/language/java/reveng/Java.g:680:13: fieldDeclaration[modifiers, t]
 2775  
                                         {
 2776  33
                                         pushFollow(FOLLOW_fieldDeclaration_in_memberDeclaration1863);
 2777  33
                                         fieldDeclaration(modifiers, t);
 2778  33
                                         state._fsp--;
 2779  33
                                         if (state.failed) return;
 2780  
                                         }
 2781  
                                         break;
 2782  
 
 2783  
                         }
 2784  
 
 2785  
                         }
 2786  
 
 2787  
                 }
 2788  0
                 catch (RecognitionException re) {
 2789  0
                         reportError(re);
 2790  0
                         recover(input,re);
 2791  
                 }
 2792  
                 finally {
 2793  
                         // do for sure before leaving
 2794  44
                         if ( state.backtracking>0 ) { memoize(input, 26, memberDeclaration_StartIndex); }
 2795  
 
 2796  0
                 }
 2797  44
         }
 2798  
         // $ANTLR end "memberDeclaration"
 2799  
 
 2800  
 
 2801  
 
 2802  
         // $ANTLR start "genericMethodOrConstructorDecl"
 2803  
         // org/argouml/language/java/reveng/Java.g:684:1: genericMethodOrConstructorDecl[short modifiers] : tparam= typeParameters genericMethodOrConstructorRest[modifiers, tparam] ;
 2804  
         public final void genericMethodOrConstructorDecl(short modifiers) throws RecognitionException {
 2805  0
                 int genericMethodOrConstructorDecl_StartIndex = input.index();
 2806  
 
 2807  0
                 List<String> tparam =null;
 2808  
 
 2809  
                 try {
 2810  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 27) ) { return; }
 2811  
 
 2812  
                         // org/argouml/language/java/reveng/Java.g:685:5: (tparam= typeParameters genericMethodOrConstructorRest[modifiers, tparam] )
 2813  
                         // org/argouml/language/java/reveng/Java.g:685:9: tparam= typeParameters genericMethodOrConstructorRest[modifiers, tparam]
 2814  
                         {
 2815  0
                         pushFollow(FOLLOW_typeParameters_in_genericMethodOrConstructorDecl1896);
 2816  0
                         tparam=typeParameters();
 2817  0
                         state._fsp--;
 2818  0
                         if (state.failed) return;
 2819  0
                         pushFollow(FOLLOW_genericMethodOrConstructorRest_in_genericMethodOrConstructorDecl1898);
 2820  0
                         genericMethodOrConstructorRest(modifiers, tparam);
 2821  0
                         state._fsp--;
 2822  0
                         if (state.failed) return;
 2823  
                         }
 2824  
 
 2825  
                 }
 2826  0
                 catch (RecognitionException re) {
 2827  0
                         reportError(re);
 2828  0
                         recover(input,re);
 2829  
                 }
 2830  
                 finally {
 2831  
                         // do for sure before leaving
 2832  0
                         if ( state.backtracking>0 ) { memoize(input, 27, genericMethodOrConstructorDecl_StartIndex); }
 2833  
 
 2834  0
                 }
 2835  0
         }
 2836  
         // $ANTLR end "genericMethodOrConstructorDecl"
 2837  
 
 2838  
 
 2839  
 
 2840  
         // $ANTLR start "genericMethodOrConstructorRest"
 2841  
         // org/argouml/language/java/reveng/Java.g:688:1: genericMethodOrConstructorRest[short modifiers, List<String> tparam] : ( (ty= type | 'void' ) name= Identifier methodDeclaratorRest[$name.text, modifiers, tparam, t] |name= Identifier constructorDeclaratorRest[$name.text, modifiers] );
 2842  
         public final void genericMethodOrConstructorRest(short modifiers, List<String> tparam) throws RecognitionException {
 2843  0
                 int genericMethodOrConstructorRest_StartIndex = input.index();
 2844  
 
 2845  0
                 Token name=null;
 2846  0
                 String ty =null;
 2847  
 
 2848  
 
 2849  0
                         String t = null;
 2850  
                     
 2851  
                 try {
 2852  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 28) ) { return; }
 2853  
 
 2854  
                         // org/argouml/language/java/reveng/Java.g:692:5: ( (ty= type | 'void' ) name= Identifier methodDeclaratorRest[$name.text, modifiers, tparam, t] |name= Identifier constructorDeclaratorRest[$name.text, modifiers] )
 2855  0
                         int alt44=2;
 2856  0
                         int LA44_0 = input.LA(1);
 2857  0
                         if ( (LA44_0==Identifier) ) {
 2858  0
                                 int LA44_1 = input.LA(2);
 2859  0
                                 if ( (LA44_1==Identifier||LA44_1==45||LA44_1==51||LA44_1==57) ) {
 2860  0
                                         alt44=1;
 2861  
                                 }
 2862  0
                                 else if ( (LA44_1==34) ) {
 2863  0
                                         alt44=2;
 2864  
                                 }
 2865  
 
 2866  
                                 else {
 2867  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 2868  0
                                         int nvaeMark = input.mark();
 2869  
                                         try {
 2870  0
                                                 input.consume();
 2871  0
                                                 NoViableAltException nvae =
 2872  
                                                         new NoViableAltException("", 44, 1, input);
 2873  0
                                                 throw nvae;
 2874  
                                         } finally {
 2875  0
                                                 input.rewind(nvaeMark);
 2876  0
                                         }
 2877  
                                 }
 2878  
 
 2879  0
                         }
 2880  0
                         else if ( (LA44_0==62||LA44_0==64||LA44_0==67||LA44_0==72||LA44_0==78||LA44_0==84||LA44_0==86||LA44_0==95||LA44_0==107) ) {
 2881  0
                                 alt44=1;
 2882  
                         }
 2883  
 
 2884  
                         else {
 2885  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 2886  0
                                 NoViableAltException nvae =
 2887  
                                         new NoViableAltException("", 44, 0, input);
 2888  0
                                 throw nvae;
 2889  
                         }
 2890  
 
 2891  0
                         switch (alt44) {
 2892  
                                 case 1 :
 2893  
                                         // org/argouml/language/java/reveng/Java.g:692:9: (ty= type | 'void' ) name= Identifier methodDeclaratorRest[$name.text, modifiers, tparam, t]
 2894  
                                         {
 2895  
                                         // org/argouml/language/java/reveng/Java.g:692:9: (ty= type | 'void' )
 2896  0
                                         int alt43=2;
 2897  0
                                         int LA43_0 = input.LA(1);
 2898  0
                                         if ( (LA43_0==Identifier||LA43_0==62||LA43_0==64||LA43_0==67||LA43_0==72||LA43_0==78||LA43_0==84||LA43_0==86||LA43_0==95) ) {
 2899  0
                                                 alt43=1;
 2900  
                                         }
 2901  0
                                         else if ( (LA43_0==107) ) {
 2902  0
                                                 alt43=2;
 2903  
                                         }
 2904  
 
 2905  
                                         else {
 2906  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 2907  0
                                                 NoViableAltException nvae =
 2908  
                                                         new NoViableAltException("", 43, 0, input);
 2909  0
                                                 throw nvae;
 2910  
                                         }
 2911  
 
 2912  0
                                         switch (alt43) {
 2913  
                                                 case 1 :
 2914  
                                                         // org/argouml/language/java/reveng/Java.g:692:10: ty= type
 2915  
                                                         {
 2916  0
                                                         pushFollow(FOLLOW_type_in_genericMethodOrConstructorRest1930);
 2917  0
                                                         ty=type();
 2918  0
                                                         state._fsp--;
 2919  0
                                                         if (state.failed) return;
 2920  0
                                                         if ( state.backtracking==0 ) { t = ty; }
 2921  
                                                         }
 2922  
                                                         break;
 2923  
                                                 case 2 :
 2924  
                                                         // org/argouml/language/java/reveng/Java.g:692:32: 'void'
 2925  
                                                         {
 2926  0
                                                         match(input,107,FOLLOW_107_in_genericMethodOrConstructorRest1936); if (state.failed) return;
 2927  0
                                                         if ( state.backtracking==0 ) { t = "void"; }
 2928  
                                                         }
 2929  
                                                         break;
 2930  
 
 2931  
                                         }
 2932  
 
 2933  0
                                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest1952); if (state.failed) return;
 2934  0
                                         pushFollow(FOLLOW_methodDeclaratorRest_in_genericMethodOrConstructorRest1962);
 2935  0
                                         methodDeclaratorRest((name!=null?name.getText():null), modifiers, tparam, t);
 2936  0
                                         state._fsp--;
 2937  0
                                         if (state.failed) return;
 2938  
                                         }
 2939  0
                                         break;
 2940  
                                 case 2 :
 2941  
                                         // org/argouml/language/java/reveng/Java.g:695:9: name= Identifier constructorDeclaratorRest[$name.text, modifiers]
 2942  
                                         {
 2943  0
                                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_genericMethodOrConstructorRest1975); if (state.failed) return;
 2944  0
                                         pushFollow(FOLLOW_constructorDeclaratorRest_in_genericMethodOrConstructorRest1985);
 2945  0
                                         constructorDeclaratorRest((name!=null?name.getText():null), modifiers);
 2946  0
                                         state._fsp--;
 2947  0
                                         if (state.failed) return;
 2948  
                                         }
 2949  
                                         break;
 2950  
 
 2951  
                         }
 2952  
                 }
 2953  0
                 catch (RecognitionException re) {
 2954  0
                         reportError(re);
 2955  0
                         recover(input,re);
 2956  
                 }
 2957  
                 finally {
 2958  
                         // do for sure before leaving
 2959  0
                         if ( state.backtracking>0 ) { memoize(input, 28, genericMethodOrConstructorRest_StartIndex); }
 2960  
 
 2961  0
                 }
 2962  0
         }
 2963  
         // $ANTLR end "genericMethodOrConstructorRest"
 2964  
 
 2965  
 
 2966  
 
 2967  
         // $ANTLR start "methodDeclaration"
 2968  
         // org/argouml/language/java/reveng/Java.g:699:1: methodDeclaration[short modifiers, List<String> tparam, String t] : name= Identifier methodDeclaratorRest[$name.text, modifiers, tparam, t] ;
 2969  
         public final void methodDeclaration(short modifiers, List<String> tparam, String t) throws RecognitionException {
 2970  11
                 int methodDeclaration_StartIndex = input.index();
 2971  
 
 2972  11
                 Token name=null;
 2973  
 
 2974  
                 try {
 2975  11
                         if ( state.backtracking>0 && alreadyParsedRule(input, 29) ) { return; }
 2976  
 
 2977  
                         // org/argouml/language/java/reveng/Java.g:700:5: (name= Identifier methodDeclaratorRest[$name.text, modifiers, tparam, t] )
 2978  
                         // org/argouml/language/java/reveng/Java.g:700:9: name= Identifier methodDeclaratorRest[$name.text, modifiers, tparam, t]
 2979  
                         {
 2980  11
                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_methodDeclaration2008); if (state.failed) return;
 2981  11
                         pushFollow(FOLLOW_methodDeclaratorRest_in_methodDeclaration2010);
 2982  11
                         methodDeclaratorRest((name!=null?name.getText():null), modifiers, tparam, t);
 2983  11
                         state._fsp--;
 2984  11
                         if (state.failed) return;
 2985  
                         }
 2986  
 
 2987  
                 }
 2988  0
                 catch (RecognitionException re) {
 2989  0
                         reportError(re);
 2990  0
                         recover(input,re);
 2991  
                 }
 2992  
                 finally {
 2993  
                         // do for sure before leaving
 2994  11
                         if ( state.backtracking>0 ) { memoize(input, 29, methodDeclaration_StartIndex); }
 2995  
 
 2996  0
                 }
 2997  11
         }
 2998  
         // $ANTLR end "methodDeclaration"
 2999  
 
 3000  
 
 3001  
 
 3002  
         // $ANTLR start "fieldDeclaration"
 3003  
         // org/argouml/language/java/reveng/Java.g:703:1: fieldDeclaration[short modifiers, String t] : variableDeclarators[getJavadocComment(), modifiers, t] ';' ;
 3004  
         public final void fieldDeclaration(short modifiers, String t) throws RecognitionException {
 3005  33
                 int fieldDeclaration_StartIndex = input.index();
 3006  
 
 3007  
                 try {
 3008  33
                         if ( state.backtracking>0 && alreadyParsedRule(input, 30) ) { return; }
 3009  
 
 3010  
                         // org/argouml/language/java/reveng/Java.g:704:5: ( variableDeclarators[getJavadocComment(), modifiers, t] ';' )
 3011  
                         // org/argouml/language/java/reveng/Java.g:704:9: variableDeclarators[getJavadocComment(), modifiers, t] ';'
 3012  
                         {
 3013  33
                         pushFollow(FOLLOW_variableDeclarators_in_fieldDeclaration2031);
 3014  33
                         variableDeclarators(getJavadocComment(), modifiers, t);
 3015  33
                         state._fsp--;
 3016  33
                         if (state.failed) return;
 3017  33
                         match(input,50,FOLLOW_50_in_fieldDeclaration2034); if (state.failed) return;
 3018  
                         }
 3019  
 
 3020  
                 }
 3021  0
                 catch (RecognitionException re) {
 3022  0
                         reportError(re);
 3023  0
                         recover(input,re);
 3024  
                 }
 3025  
                 finally {
 3026  
                         // do for sure before leaving
 3027  33
                         if ( state.backtracking>0 ) { memoize(input, 30, fieldDeclaration_StartIndex); }
 3028  
 
 3029  0
                 }
 3030  33
         }
 3031  
         // $ANTLR end "fieldDeclaration"
 3032  
 
 3033  
 
 3034  
 
 3035  
         // $ANTLR start "interfaceBodyDeclaration"
 3036  
         // org/argouml/language/java/reveng/Java.g:707:1: interfaceBodyDeclaration : (m= modifiers interfaceMemberDecl[m] | ';' );
 3037  
         public final void interfaceBodyDeclaration() throws RecognitionException {
 3038  8
                 int interfaceBodyDeclaration_StartIndex = input.index();
 3039  
 
 3040  8
                 short m =0;
 3041  
 
 3042  
                 try {
 3043  8
                         if ( state.backtracking>0 && alreadyParsedRule(input, 31) ) { return; }
 3044  
 
 3045  
                         // org/argouml/language/java/reveng/Java.g:708:5: (m= modifiers interfaceMemberDecl[m] | ';' )
 3046  8
                         int alt45=2;
 3047  8
                         int LA45_0 = input.LA(1);
 3048  8
                         if ( (LA45_0==ENUM||LA45_0==Identifier||LA45_0==51||LA45_0==56||(LA45_0 >= 61 && LA45_0 <= 62)||LA45_0==64||(LA45_0 >= 67 && LA45_0 <= 68)||LA45_0==72||LA45_0==76||LA45_0==78||(LA45_0 >= 84 && LA45_0 <= 87)||(LA45_0 >= 91 && LA45_0 <= 93)||(LA45_0 >= 95 && LA45_0 <= 97)||LA45_0==100||LA45_0==104||(LA45_0 >= 107 && LA45_0 <= 108)) ) {
 3049  8
                                 alt45=1;
 3050  
                         }
 3051  0
                         else if ( (LA45_0==50) ) {
 3052  0
                                 alt45=2;
 3053  
                         }
 3054  
 
 3055  
                         else {
 3056  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 3057  0
                                 NoViableAltException nvae =
 3058  
                                         new NoViableAltException("", 45, 0, input);
 3059  0
                                 throw nvae;
 3060  
                         }
 3061  
 
 3062  8
                         switch (alt45) {
 3063  
                                 case 1 :
 3064  
                                         // org/argouml/language/java/reveng/Java.g:708:9: m= modifiers interfaceMemberDecl[m]
 3065  
                                         {
 3066  8
                                         pushFollow(FOLLOW_modifiers_in_interfaceBodyDeclaration2063);
 3067  8
                                         m=modifiers();
 3068  8
                                         state._fsp--;
 3069  8
                                         if (state.failed) return;
 3070  8
                                         pushFollow(FOLLOW_interfaceMemberDecl_in_interfaceBodyDeclaration2065);
 3071  8
                                         interfaceMemberDecl(m);
 3072  8
                                         state._fsp--;
 3073  8
                                         if (state.failed) return;
 3074  
                                         }
 3075  
                                         break;
 3076  
                                 case 2 :
 3077  
                                         // org/argouml/language/java/reveng/Java.g:709:9: ';'
 3078  
                                         {
 3079  0
                                         match(input,50,FOLLOW_50_in_interfaceBodyDeclaration2076); if (state.failed) return;
 3080  
                                         }
 3081  
                                         break;
 3082  
 
 3083  
                         }
 3084  
                 }
 3085  0
                 catch (RecognitionException re) {
 3086  0
                         reportError(re);
 3087  0
                         recover(input,re);
 3088  
                 }
 3089  
                 finally {
 3090  
                         // do for sure before leaving
 3091  8
                         if ( state.backtracking>0 ) { memoize(input, 31, interfaceBodyDeclaration_StartIndex); }
 3092  
 
 3093  0
                 }
 3094  8
         }
 3095  
         // $ANTLR end "interfaceBodyDeclaration"
 3096  
 
 3097  
 
 3098  
 
 3099  
         // $ANTLR start "interfaceMemberDecl"
 3100  
         // org/argouml/language/java/reveng/Java.g:712:1: interfaceMemberDecl[short modifiers] : ( interfaceMethodOrFieldDecl[modifiers] | interfaceGenericMethodDecl[modifiers] | 'void' name= Identifier voidInterfaceMethodDeclaratorRest[$name.text, modifiers] | interfaceDeclaration[getJavadocComment(), modifiers] | classDeclaration[getJavadocComment(), modifiers] );
 3101  
         public final void interfaceMemberDecl(short modifiers) throws RecognitionException {
 3102  8
                 int interfaceMemberDecl_StartIndex = input.index();
 3103  
 
 3104  8
                 Token name=null;
 3105  
 
 3106  
                 try {
 3107  8
                         if ( state.backtracking>0 && alreadyParsedRule(input, 32) ) { return; }
 3108  
 
 3109  
                         // org/argouml/language/java/reveng/Java.g:713:5: ( interfaceMethodOrFieldDecl[modifiers] | interfaceGenericMethodDecl[modifiers] | 'void' name= Identifier voidInterfaceMethodDeclaratorRest[$name.text, modifiers] | interfaceDeclaration[getJavadocComment(), modifiers] | classDeclaration[getJavadocComment(), modifiers] )
 3110  8
                         int alt46=5;
 3111  8
                         switch ( input.LA(1) ) {
 3112  
                         case Identifier:
 3113  
                         case 62:
 3114  
                         case 64:
 3115  
                         case 67:
 3116  
                         case 72:
 3117  
                         case 78:
 3118  
                         case 84:
 3119  
                         case 86:
 3120  
                         case 95:
 3121  
                                 {
 3122  4
                                 alt46=1;
 3123  
                                 }
 3124  4
                                 break;
 3125  
                         case 51:
 3126  
                                 {
 3127  0
                                 alt46=2;
 3128  
                                 }
 3129  0
                                 break;
 3130  
                         case 107:
 3131  
                                 {
 3132  4
                                 alt46=3;
 3133  
                                 }
 3134  4
                                 break;
 3135  
                         case 56:
 3136  
                         case 85:
 3137  
                                 {
 3138  0
                                 alt46=4;
 3139  
                                 }
 3140  0
                                 break;
 3141  
                         case ENUM:
 3142  
                         case 68:
 3143  
                                 {
 3144  0
                                 alt46=5;
 3145  
                                 }
 3146  0
                                 break;
 3147  
                         default:
 3148  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 3149  0
                                 NoViableAltException nvae =
 3150  
                                         new NoViableAltException("", 46, 0, input);
 3151  0
                                 throw nvae;
 3152  
                         }
 3153  8
                         switch (alt46) {
 3154  
                                 case 1 :
 3155  
                                         // org/argouml/language/java/reveng/Java.g:713:9: interfaceMethodOrFieldDecl[modifiers]
 3156  
                                         {
 3157  4
                                         pushFollow(FOLLOW_interfaceMethodOrFieldDecl_in_interfaceMemberDecl2096);
 3158  4
                                         interfaceMethodOrFieldDecl(modifiers);
 3159  4
                                         state._fsp--;
 3160  4
                                         if (state.failed) return;
 3161  
                                         }
 3162  
                                         break;
 3163  
                                 case 2 :
 3164  
                                         // org/argouml/language/java/reveng/Java.g:714:9: interfaceGenericMethodDecl[modifiers]
 3165  
                                         {
 3166  0
                                         pushFollow(FOLLOW_interfaceGenericMethodDecl_in_interfaceMemberDecl2107);
 3167  0
                                         interfaceGenericMethodDecl(modifiers);
 3168  0
                                         state._fsp--;
 3169  0
                                         if (state.failed) return;
 3170  
                                         }
 3171  
                                         break;
 3172  
                                 case 3 :
 3173  
                                         // org/argouml/language/java/reveng/Java.g:715:9: 'void' name= Identifier voidInterfaceMethodDeclaratorRest[$name.text, modifiers]
 3174  
                                         {
 3175  4
                                         match(input,107,FOLLOW_107_in_interfaceMemberDecl2118); if (state.failed) return;
 3176  4
                                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_interfaceMemberDecl2122); if (state.failed) return;
 3177  4
                                         pushFollow(FOLLOW_voidInterfaceMethodDeclaratorRest_in_interfaceMemberDecl2132);
 3178  4
                                         voidInterfaceMethodDeclaratorRest((name!=null?name.getText():null), modifiers);
 3179  4
                                         state._fsp--;
 3180  4
                                         if (state.failed) return;
 3181  
                                         }
 3182  
                                         break;
 3183  
                                 case 4 :
 3184  
                                         // org/argouml/language/java/reveng/Java.g:717:9: interfaceDeclaration[getJavadocComment(), modifiers]
 3185  
                                         {
 3186  0
                                         pushFollow(FOLLOW_interfaceDeclaration_in_interfaceMemberDecl2143);
 3187  0
                                         interfaceDeclaration(getJavadocComment(), modifiers);
 3188  0
                                         state._fsp--;
 3189  0
                                         if (state.failed) return;
 3190  
                                         }
 3191  
                                         break;
 3192  
                                 case 5 :
 3193  
                                         // org/argouml/language/java/reveng/Java.g:718:9: classDeclaration[getJavadocComment(), modifiers]
 3194  
                                         {
 3195  0
                                         pushFollow(FOLLOW_classDeclaration_in_interfaceMemberDecl2154);
 3196  0
                                         classDeclaration(getJavadocComment(), modifiers);
 3197  0
                                         state._fsp--;
 3198  0
                                         if (state.failed) return;
 3199  
                                         }
 3200  
                                         break;
 3201  
 
 3202  
                         }
 3203  
                 }
 3204  0
                 catch (RecognitionException re) {
 3205  0
                         reportError(re);
 3206  0
                         recover(input,re);
 3207  
                 }
 3208  
                 finally {
 3209  
                         // do for sure before leaving
 3210  8
                         if ( state.backtracking>0 ) { memoize(input, 32, interfaceMemberDecl_StartIndex); }
 3211  
 
 3212  0
                 }
 3213  8
         }
 3214  
         // $ANTLR end "interfaceMemberDecl"
 3215  
 
 3216  
 
 3217  
 
 3218  
         // $ANTLR start "interfaceMethodOrFieldDecl"
 3219  
         // org/argouml/language/java/reveng/Java.g:721:1: interfaceMethodOrFieldDecl[short modifiers] : t= type name= Identifier interfaceMethodOrFieldRest[$name.text, modifiers, t] ;
 3220  
         public final void interfaceMethodOrFieldDecl(short modifiers) throws RecognitionException {
 3221  4
                 int interfaceMethodOrFieldDecl_StartIndex = input.index();
 3222  
 
 3223  4
                 Token name=null;
 3224  4
                 String t =null;
 3225  
 
 3226  
                 try {
 3227  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 33) ) { return; }
 3228  
 
 3229  
                         // org/argouml/language/java/reveng/Java.g:722:5: (t= type name= Identifier interfaceMethodOrFieldRest[$name.text, modifiers, t] )
 3230  
                         // org/argouml/language/java/reveng/Java.g:722:9: t= type name= Identifier interfaceMethodOrFieldRest[$name.text, modifiers, t]
 3231  
                         {
 3232  4
                         pushFollow(FOLLOW_type_in_interfaceMethodOrFieldDecl2177);
 3233  4
                         t=type();
 3234  4
                         state._fsp--;
 3235  4
                         if (state.failed) return;
 3236  4
                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_interfaceMethodOrFieldDecl2181); if (state.failed) return;
 3237  4
                         pushFollow(FOLLOW_interfaceMethodOrFieldRest_in_interfaceMethodOrFieldDecl2191);
 3238  4
                         interfaceMethodOrFieldRest((name!=null?name.getText():null), modifiers, t);
 3239  4
                         state._fsp--;
 3240  4
                         if (state.failed) return;
 3241  
                         }
 3242  
 
 3243  
                 }
 3244  0
                 catch (RecognitionException re) {
 3245  0
                         reportError(re);
 3246  0
                         recover(input,re);
 3247  
                 }
 3248  
                 finally {
 3249  
                         // do for sure before leaving
 3250  4
                         if ( state.backtracking>0 ) { memoize(input, 33, interfaceMethodOrFieldDecl_StartIndex); }
 3251  
 
 3252  0
                 }
 3253  4
         }
 3254  
         // $ANTLR end "interfaceMethodOrFieldDecl"
 3255  
 
 3256  
 
 3257  
 
 3258  
         // $ANTLR start "interfaceMethodOrFieldRest"
 3259  
         // org/argouml/language/java/reveng/Java.g:726:1: interfaceMethodOrFieldRest[String name, short modifiers, String t] : ( constantDeclaratorsRest[getJavadocComment(), name, modifiers, t] ';' | interfaceMethodDeclaratorRest[name, modifiers, null, t] );
 3260  
         public final void interfaceMethodOrFieldRest(String name, short modifiers, String t) throws RecognitionException {
 3261  4
                 int interfaceMethodOrFieldRest_StartIndex = input.index();
 3262  
 
 3263  
                 try {
 3264  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 34) ) { return; }
 3265  
 
 3266  
                         // org/argouml/language/java/reveng/Java.g:727:5: ( constantDeclaratorsRest[getJavadocComment(), name, modifiers, t] ';' | interfaceMethodDeclaratorRest[name, modifiers, null, t] )
 3267  4
                         int alt47=2;
 3268  4
                         int LA47_0 = input.LA(1);
 3269  4
                         if ( (LA47_0==52||LA47_0==57) ) {
 3270  0
                                 alt47=1;
 3271  
                         }
 3272  4
                         else if ( (LA47_0==34) ) {
 3273  4
                                 alt47=2;
 3274  
                         }
 3275  
 
 3276  
                         else {
 3277  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 3278  0
                                 NoViableAltException nvae =
 3279  
                                         new NoViableAltException("", 47, 0, input);
 3280  0
                                 throw nvae;
 3281  
                         }
 3282  
 
 3283  4
                         switch (alt47) {
 3284  
                                 case 1 :
 3285  
                                         // org/argouml/language/java/reveng/Java.g:727:9: constantDeclaratorsRest[getJavadocComment(), name, modifiers, t] ';'
 3286  
                                         {
 3287  0
                                         pushFollow(FOLLOW_constantDeclaratorsRest_in_interfaceMethodOrFieldRest2212);
 3288  0
                                         constantDeclaratorsRest(getJavadocComment(), name, modifiers, t);
 3289  0
                                         state._fsp--;
 3290  0
                                         if (state.failed) return;
 3291  0
                                         match(input,50,FOLLOW_50_in_interfaceMethodOrFieldRest2215); if (state.failed) return;
 3292  
                                         }
 3293  
                                         break;
 3294  
                                 case 2 :
 3295  
                                         // org/argouml/language/java/reveng/Java.g:728:9: interfaceMethodDeclaratorRest[name, modifiers, null, t]
 3296  
                                         {
 3297  4
                                         pushFollow(FOLLOW_interfaceMethodDeclaratorRest_in_interfaceMethodOrFieldRest2225);
 3298  4
                                         interfaceMethodDeclaratorRest(name, modifiers, null, t);
 3299  4
                                         state._fsp--;
 3300  4
                                         if (state.failed) return;
 3301  
                                         }
 3302  
                                         break;
 3303  
 
 3304  
                         }
 3305  
                 }
 3306  0
                 catch (RecognitionException re) {
 3307  0
                         reportError(re);
 3308  0
                         recover(input,re);
 3309  
                 }
 3310  
                 finally {
 3311  
                         // do for sure before leaving
 3312  4
                         if ( state.backtracking>0 ) { memoize(input, 34, interfaceMethodOrFieldRest_StartIndex); }
 3313  
 
 3314  0
                 }
 3315  4
         }
 3316  
         // $ANTLR end "interfaceMethodOrFieldRest"
 3317  
 
 3318  
 
 3319  
 
 3320  
         // $ANTLR start "methodDeclaratorRest"
 3321  
         // org/argouml/language/java/reveng/Java.g:731:1: methodDeclaratorRest[String name, short modifiers, List<String> tparam, String t] : param= formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
 3322  
         public final void methodDeclaratorRest(String name, short modifiers, List<String> tparam, String t) throws RecognitionException {
 3323  11
                 int methodDeclaratorRest_StartIndex = input.index();
 3324  
 
 3325  11
                 List<ParameterDeclaration> param =null;
 3326  
 
 3327  
 
 3328  11
                         StringBuffer sb = new StringBuffer(80);
 3329  11
                         if (t != null) {
 3330  11
                             sb.append(t);
 3331  
                         }
 3332  11
                         boolean isOutestCompStat = !isInCompoundStatement();
 3333  
                     
 3334  
                 try {
 3335  11
                         if ( state.backtracking>0 && alreadyParsedRule(input, 35) ) { return; }
 3336  
 
 3337  
                         // org/argouml/language/java/reveng/Java.g:739:5: (param= formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
 3338  
                         // org/argouml/language/java/reveng/Java.g:739:9: param= formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ( methodBody | ';' )
 3339  
                         {
 3340  11
                         pushFollow(FOLLOW_formalParameters_in_methodDeclaratorRest2256);
 3341  11
                         param=formalParameters();
 3342  11
                         state._fsp--;
 3343  11
                         if (state.failed) return;
 3344  
                         // org/argouml/language/java/reveng/Java.g:739:32: ( '[' ']' )*
 3345  
                         loop48:
 3346  
                         while (true) {
 3347  11
                                 int alt48=2;
 3348  11
                                 int LA48_0 = input.LA(1);
 3349  11
                                 if ( (LA48_0==57) ) {
 3350  0
                                         alt48=1;
 3351  
                                 }
 3352  
 
 3353  11
                                 switch (alt48) {
 3354  
                                 case 1 :
 3355  
                                         // org/argouml/language/java/reveng/Java.g:739:33: '[' ']'
 3356  
                                         {
 3357  0
                                         match(input,57,FOLLOW_57_in_methodDeclaratorRest2259); if (state.failed) return;
 3358  0
                                         match(input,58,FOLLOW_58_in_methodDeclaratorRest2261); if (state.failed) return;
 3359  0
                                         if ( state.backtracking==0 ) { sb.append("[]"); }
 3360  
                                         }
 3361  
                                         break;
 3362  
 
 3363  
                                 default :
 3364  11
                                         break loop48;
 3365  
                                 }
 3366  0
                         }
 3367  
 
 3368  
                         // org/argouml/language/java/reveng/Java.g:740:9: ( 'throws' qualifiedNameList )?
 3369  11
                         int alt49=2;
 3370  11
                         int LA49_0 = input.LA(1);
 3371  11
                         if ( (LA49_0==103) ) {
 3372  2
                                 alt49=1;
 3373  
                         }
 3374  11
                         switch (alt49) {
 3375  
                                 case 1 :
 3376  
                                         // org/argouml/language/java/reveng/Java.g:740:10: 'throws' qualifiedNameList
 3377  
                                         {
 3378  2
                                         match(input,103,FOLLOW_103_in_methodDeclaratorRest2277); if (state.failed) return;
 3379  2
                                         pushFollow(FOLLOW_qualifiedNameList_in_methodDeclaratorRest2279);
 3380  2
                                         qualifiedNameList();
 3381  2
                                         state._fsp--;
 3382  2
                                         if (state.failed) return;
 3383  
                                         }
 3384  
                                         break;
 3385  
 
 3386  
                         }
 3387  
 
 3388  
                         // org/argouml/language/java/reveng/Java.g:741:9: ( methodBody | ';' )
 3389  11
                         int alt50=2;
 3390  11
                         int LA50_0 = input.LA(1);
 3391  11
                         if ( (LA50_0==110) ) {
 3392  11
                                 alt50=1;
 3393  
                         }
 3394  0
                         else if ( (LA50_0==50) ) {
 3395  0
                                 alt50=2;
 3396  
                         }
 3397  
 
 3398  
                         else {
 3399  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 3400  0
                                 NoViableAltException nvae =
 3401  
                                         new NoViableAltException("", 50, 0, input);
 3402  0
                                 throw nvae;
 3403  
                         }
 3404  
 
 3405  11
                         switch (alt50) {
 3406  
                                 case 1 :
 3407  
                                         // org/argouml/language/java/reveng/Java.g:741:13: methodBody
 3408  
                                         {
 3409  11
                                         pushFollow(FOLLOW_methodBody_in_methodDeclaratorRest2295);
 3410  11
                                         methodBody();
 3411  11
                                         state._fsp--;
 3412  11
                                         if (state.failed) return;
 3413  
                                         }
 3414  
                                         break;
 3415  
                                 case 2 :
 3416  
                                         // org/argouml/language/java/reveng/Java.g:742:13: ';'
 3417  
                                         {
 3418  0
                                         match(input,50,FOLLOW_50_in_methodDeclaratorRest2309); if (state.failed) return;
 3419  
                                         }
 3420  
                                         break;
 3421  
 
 3422  
                         }
 3423  
 
 3424  11
                         if ( state.backtracking==0 ) {
 3425  11
                                     if (isOutestCompStat && level > 0) {
 3426  22
                                         setMethod(getModeller().addOperation(modifiers, tparam,
 3427  11
                                             sb.toString(), name, param, getJavadocComment(),
 3428  
                                             (parserMode == MODE_IMPORT_PASS2)));
 3429  22
                                         getModeller().addBodyToOperation(getMethod(),
 3430  11
                                             (level > 1 ? getBody() : ""));
 3431  11
                                         setMethod(null);
 3432  11
                                         setBody(null);
 3433  
                                     }
 3434  
                                 }
 3435  
                         }
 3436  
 
 3437  
                 }
 3438  0
                 catch (RecognitionException re) {
 3439  0
                         reportError(re);
 3440  0
                         recover(input,re);
 3441  
                 }
 3442  
                 finally {
 3443  
                         // do for sure before leaving
 3444  11
                         if ( state.backtracking>0 ) { memoize(input, 35, methodDeclaratorRest_StartIndex); }
 3445  
 
 3446  0
                 }
 3447  11
         }
 3448  
         // $ANTLR end "methodDeclaratorRest"
 3449  
 
 3450  
 
 3451  
 
 3452  
         // $ANTLR start "voidMethodDeclaratorRest"
 3453  
         // org/argouml/language/java/reveng/Java.g:758:1: voidMethodDeclaratorRest[String name, short modifiers] : param= formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) ;
 3454  
         public final void voidMethodDeclaratorRest(String name, short modifiers) throws RecognitionException {
 3455  19
                 int voidMethodDeclaratorRest_StartIndex = input.index();
 3456  
 
 3457  19
                 List<ParameterDeclaration> param =null;
 3458  
 
 3459  
 
 3460  19
                         boolean isOutestCompStat = !isInCompoundStatement();
 3461  
                     
 3462  
                 try {
 3463  19
                         if ( state.backtracking>0 && alreadyParsedRule(input, 36) ) { return; }
 3464  
 
 3465  
                         // org/argouml/language/java/reveng/Java.g:762:5: (param= formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' ) )
 3466  
                         // org/argouml/language/java/reveng/Java.g:762:9: param= formalParameters ( 'throws' qualifiedNameList )? ( methodBody | ';' )
 3467  
                         {
 3468  19
                         pushFollow(FOLLOW_formalParameters_in_voidMethodDeclaratorRest2368);
 3469  19
                         param=formalParameters();
 3470  19
                         state._fsp--;
 3471  19
                         if (state.failed) return;
 3472  
                         // org/argouml/language/java/reveng/Java.g:762:32: ( 'throws' qualifiedNameList )?
 3473  19
                         int alt51=2;
 3474  19
                         int LA51_0 = input.LA(1);
 3475  19
                         if ( (LA51_0==103) ) {
 3476  0
                                 alt51=1;
 3477  
                         }
 3478  19
                         switch (alt51) {
 3479  
                                 case 1 :
 3480  
                                         // org/argouml/language/java/reveng/Java.g:762:33: 'throws' qualifiedNameList
 3481  
                                         {
 3482  0
                                         match(input,103,FOLLOW_103_in_voidMethodDeclaratorRest2371); if (state.failed) return;
 3483  0
                                         pushFollow(FOLLOW_qualifiedNameList_in_voidMethodDeclaratorRest2373);
 3484  0
                                         qualifiedNameList();
 3485  0
                                         state._fsp--;
 3486  0
                                         if (state.failed) return;
 3487  
                                         }
 3488  
                                         break;
 3489  
 
 3490  
                         }
 3491  
 
 3492  
                         // org/argouml/language/java/reveng/Java.g:763:9: ( methodBody | ';' )
 3493  19
                         int alt52=2;
 3494  19
                         int LA52_0 = input.LA(1);
 3495  19
                         if ( (LA52_0==110) ) {
 3496  12
                                 alt52=1;
 3497  
                         }
 3498  7
                         else if ( (LA52_0==50) ) {
 3499  7
                                 alt52=2;
 3500  
                         }
 3501  
 
 3502  
                         else {
 3503  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 3504  0
                                 NoViableAltException nvae =
 3505  
                                         new NoViableAltException("", 52, 0, input);
 3506  0
                                 throw nvae;
 3507  
                         }
 3508  
 
 3509  19
                         switch (alt52) {
 3510  
                                 case 1 :
 3511  
                                         // org/argouml/language/java/reveng/Java.g:763:13: methodBody
 3512  
                                         {
 3513  12
                                         pushFollow(FOLLOW_methodBody_in_voidMethodDeclaratorRest2389);
 3514  12
                                         methodBody();
 3515  12
                                         state._fsp--;
 3516  12
                                         if (state.failed) return;
 3517  
                                         }
 3518  
                                         break;
 3519  
                                 case 2 :
 3520  
                                         // org/argouml/language/java/reveng/Java.g:764:13: ';'
 3521  
                                         {
 3522  7
                                         match(input,50,FOLLOW_50_in_voidMethodDeclaratorRest2403); if (state.failed) return;
 3523  
                                         }
 3524  
                                         break;
 3525  
 
 3526  
                         }
 3527  
 
 3528  19
                         if ( state.backtracking==0 ) {
 3529  19
                                     if (isOutestCompStat && level > 0) {
 3530  38
                                         setMethod(getModeller().addOperation(modifiers, null,
 3531  19
                                             "void", name, param, getJavadocComment(),
 3532  
                                             (parserMode == MODE_IMPORT_PASS2)));
 3533  38
                                         getModeller().addBodyToOperation(getMethod(),
 3534  19
                                             (level > 1 ? getBody() : ""));
 3535  19
                                         setMethod(null);
 3536  19
                                         setBody(null);
 3537  
                                     }
 3538  
                                 }
 3539  
                         }
 3540  
 
 3541  
                 }
 3542  0
                 catch (RecognitionException re) {
 3543  0
                         reportError(re);
 3544  0
                         recover(input,re);
 3545  
                 }
 3546  
                 finally {
 3547  
                         // do for sure before leaving
 3548  19
                         if ( state.backtracking>0 ) { memoize(input, 36, voidMethodDeclaratorRest_StartIndex); }
 3549  
 
 3550  0
                 }
 3551  19
         }
 3552  
         // $ANTLR end "voidMethodDeclaratorRest"
 3553  
 
 3554  
 
 3555  
 
 3556  
         // $ANTLR start "interfaceMethodDeclaratorRest"
 3557  
         // org/argouml/language/java/reveng/Java.g:780:1: interfaceMethodDeclaratorRest[String name, short modifiers, List<String> tparam, String t] : param= formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' ;
 3558  
         public final void interfaceMethodDeclaratorRest(String name, short modifiers, List<String> tparam, String t) throws RecognitionException {
 3559  4
                 int interfaceMethodDeclaratorRest_StartIndex = input.index();
 3560  
 
 3561  4
                 List<ParameterDeclaration> param =null;
 3562  
 
 3563  
 
 3564  4
                         StringBuffer sb = new StringBuffer(80);
 3565  4
                         if (t != null) {
 3566  4
                             sb.append(t);
 3567  
                         }
 3568  4
                         boolean isOutestCompStat = !isInCompoundStatement();
 3569  
                     
 3570  
                 try {
 3571  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 37) ) { return; }
 3572  
 
 3573  
                         // org/argouml/language/java/reveng/Java.g:788:5: (param= formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';' )
 3574  
                         // org/argouml/language/java/reveng/Java.g:788:9: param= formalParameters ( '[' ']' )* ( 'throws' qualifiedNameList )? ';'
 3575  
                         {
 3576  4
                         pushFollow(FOLLOW_formalParameters_in_interfaceMethodDeclaratorRest2462);
 3577  4
                         param=formalParameters();
 3578  4
                         state._fsp--;
 3579  4
                         if (state.failed) return;
 3580  
                         // org/argouml/language/java/reveng/Java.g:788:32: ( '[' ']' )*
 3581  
                         loop53:
 3582  
                         while (true) {
 3583  4
                                 int alt53=2;
 3584  4
                                 int LA53_0 = input.LA(1);
 3585  4
                                 if ( (LA53_0==57) ) {
 3586  0
                                         alt53=1;
 3587  
                                 }
 3588  
 
 3589  4
                                 switch (alt53) {
 3590  
                                 case 1 :
 3591  
                                         // org/argouml/language/java/reveng/Java.g:788:33: '[' ']'
 3592  
                                         {
 3593  0
                                         match(input,57,FOLLOW_57_in_interfaceMethodDeclaratorRest2465); if (state.failed) return;
 3594  0
                                         match(input,58,FOLLOW_58_in_interfaceMethodDeclaratorRest2467); if (state.failed) return;
 3595  0
                                         if ( state.backtracking==0 ) { sb.append("[]"); }
 3596  
                                         }
 3597  
                                         break;
 3598  
 
 3599  
                                 default :
 3600  4
                                         break loop53;
 3601  
                                 }
 3602  0
                         }
 3603  
 
 3604  
                         // org/argouml/language/java/reveng/Java.g:789:9: ( 'throws' qualifiedNameList )?
 3605  4
                         int alt54=2;
 3606  4
                         int LA54_0 = input.LA(1);
 3607  4
                         if ( (LA54_0==103) ) {
 3608  0
                                 alt54=1;
 3609  
                         }
 3610  4
                         switch (alt54) {
 3611  
                                 case 1 :
 3612  
                                         // org/argouml/language/java/reveng/Java.g:789:10: 'throws' qualifiedNameList
 3613  
                                         {
 3614  0
                                         match(input,103,FOLLOW_103_in_interfaceMethodDeclaratorRest2483); if (state.failed) return;
 3615  0
                                         pushFollow(FOLLOW_qualifiedNameList_in_interfaceMethodDeclaratorRest2485);
 3616  0
                                         qualifiedNameList();
 3617  0
                                         state._fsp--;
 3618  0
                                         if (state.failed) return;
 3619  
                                         }
 3620  
                                         break;
 3621  
 
 3622  
                         }
 3623  
 
 3624  4
                         match(input,50,FOLLOW_50_in_interfaceMethodDeclaratorRest2497); if (state.failed) return;
 3625  4
                         if ( state.backtracking==0 ) {
 3626  4
                                     if (isOutestCompStat && level > 0) {
 3627  8
                                         setMethod(getModeller().addOperation(modifiers, tparam,
 3628  4
                                             sb.toString(), name, param, getJavadocComment(),
 3629  
                                             (parserMode == MODE_IMPORT_PASS2)));
 3630  4
                                         setMethod(null);
 3631  
                                     }
 3632  
                                 }
 3633  
                         }
 3634  
 
 3635  
                 }
 3636  0
                 catch (RecognitionException re) {
 3637  0
                         reportError(re);
 3638  0
                         recover(input,re);
 3639  
                 }
 3640  
                 finally {
 3641  
                         // do for sure before leaving
 3642  4
                         if ( state.backtracking>0 ) { memoize(input, 37, interfaceMethodDeclaratorRest_StartIndex); }
 3643  
 
 3644  0
                 }
 3645  4
         }
 3646  
         // $ANTLR end "interfaceMethodDeclaratorRest"
 3647  
 
 3648  
 
 3649  
 
 3650  
         // $ANTLR start "interfaceGenericMethodDecl"
 3651  
         // org/argouml/language/java/reveng/Java.g:802:1: interfaceGenericMethodDecl[short modifiers] : tparam= typeParameters (ty= type | 'void' ) name= Identifier interfaceMethodDeclaratorRest[$name.text, modifiers, tparam, t] ;
 3652  
         public final void interfaceGenericMethodDecl(short modifiers) throws RecognitionException {
 3653  0
                 int interfaceGenericMethodDecl_StartIndex = input.index();
 3654  
 
 3655  0
                 Token name=null;
 3656  0
                 List<String> tparam =null;
 3657  0
                 String ty =null;
 3658  
 
 3659  
 
 3660  0
                         String t = null;
 3661  
                     
 3662  
                 try {
 3663  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 38) ) { return; }
 3664  
 
 3665  
                         // org/argouml/language/java/reveng/Java.g:806:5: (tparam= typeParameters (ty= type | 'void' ) name= Identifier interfaceMethodDeclaratorRest[$name.text, modifiers, tparam, t] )
 3666  
                         // org/argouml/language/java/reveng/Java.g:806:9: tparam= typeParameters (ty= type | 'void' ) name= Identifier interfaceMethodDeclaratorRest[$name.text, modifiers, tparam, t]
 3667  
                         {
 3668  0
                         pushFollow(FOLLOW_typeParameters_in_interfaceGenericMethodDecl2546);
 3669  0
                         tparam=typeParameters();
 3670  0
                         state._fsp--;
 3671  0
                         if (state.failed) return;
 3672  
                         // org/argouml/language/java/reveng/Java.g:806:31: (ty= type | 'void' )
 3673  0
                         int alt55=2;
 3674  0
                         int LA55_0 = input.LA(1);
 3675  0
                         if ( (LA55_0==Identifier||LA55_0==62||LA55_0==64||LA55_0==67||LA55_0==72||LA55_0==78||LA55_0==84||LA55_0==86||LA55_0==95) ) {
 3676  0
                                 alt55=1;
 3677  
                         }
 3678  0
                         else if ( (LA55_0==107) ) {
 3679  0
                                 alt55=2;
 3680  
                         }
 3681  
 
 3682  
                         else {
 3683  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 3684  0
                                 NoViableAltException nvae =
 3685  
                                         new NoViableAltException("", 55, 0, input);
 3686  0
                                 throw nvae;
 3687  
                         }
 3688  
 
 3689  0
                         switch (alt55) {
 3690  
                                 case 1 :
 3691  
                                         // org/argouml/language/java/reveng/Java.g:806:32: ty= type
 3692  
                                         {
 3693  0
                                         pushFollow(FOLLOW_type_in_interfaceGenericMethodDecl2551);
 3694  0
                                         ty=type();
 3695  0
                                         state._fsp--;
 3696  0
                                         if (state.failed) return;
 3697  0
                                         if ( state.backtracking==0 ) { t = ty; }
 3698  
                                         }
 3699  
                                         break;
 3700  
                                 case 2 :
 3701  
                                         // org/argouml/language/java/reveng/Java.g:806:54: 'void'
 3702  
                                         {
 3703  0
                                         match(input,107,FOLLOW_107_in_interfaceGenericMethodDecl2557); if (state.failed) return;
 3704  0
                                         if ( state.backtracking==0 ) { t = "void"; }
 3705  
                                         }
 3706  
                                         break;
 3707  
 
 3708  
                         }
 3709  
 
 3710  0
                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_interfaceGenericMethodDecl2573); if (state.failed) return;
 3711  0
                         pushFollow(FOLLOW_interfaceMethodDeclaratorRest_in_interfaceGenericMethodDecl2583);
 3712  0
                         interfaceMethodDeclaratorRest((name!=null?name.getText():null), modifiers, tparam, t);
 3713  0
                         state._fsp--;
 3714  0
                         if (state.failed) return;
 3715  
                         }
 3716  
 
 3717  
                 }
 3718  0
                 catch (RecognitionException re) {
 3719  0
                         reportError(re);
 3720  0
                         recover(input,re);
 3721  
                 }
 3722  
                 finally {
 3723  
                         // do for sure before leaving
 3724  0
                         if ( state.backtracking>0 ) { memoize(input, 38, interfaceGenericMethodDecl_StartIndex); }
 3725  
 
 3726  0
                 }
 3727  0
         }
 3728  
         // $ANTLR end "interfaceGenericMethodDecl"
 3729  
 
 3730  
 
 3731  
 
 3732  
         // $ANTLR start "voidInterfaceMethodDeclaratorRest"
 3733  
         // org/argouml/language/java/reveng/Java.g:811:1: voidInterfaceMethodDeclaratorRest[String name, short modifiers] : param= formalParameters ( 'throws' qualifiedNameList )? ';' ;
 3734  
         public final void voidInterfaceMethodDeclaratorRest(String name, short modifiers) throws RecognitionException {
 3735  4
                 int voidInterfaceMethodDeclaratorRest_StartIndex = input.index();
 3736  
 
 3737  4
                 List<ParameterDeclaration> param =null;
 3738  
 
 3739  
 
 3740  4
                         boolean isOutestCompStat = !isInCompoundStatement();
 3741  
                     
 3742  
                 try {
 3743  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 39) ) { return; }
 3744  
 
 3745  
                         // org/argouml/language/java/reveng/Java.g:815:5: (param= formalParameters ( 'throws' qualifiedNameList )? ';' )
 3746  
                         // org/argouml/language/java/reveng/Java.g:815:9: param= formalParameters ( 'throws' qualifiedNameList )? ';'
 3747  
                         {
 3748  4
                         pushFollow(FOLLOW_formalParameters_in_voidInterfaceMethodDeclaratorRest2614);
 3749  4
                         param=formalParameters();
 3750  4
                         state._fsp--;
 3751  4
                         if (state.failed) return;
 3752  
                         // org/argouml/language/java/reveng/Java.g:815:32: ( 'throws' qualifiedNameList )?
 3753  4
                         int alt56=2;
 3754  4
                         int LA56_0 = input.LA(1);
 3755  4
                         if ( (LA56_0==103) ) {
 3756  0
                                 alt56=1;
 3757  
                         }
 3758  4
                         switch (alt56) {
 3759  
                                 case 1 :
 3760  
                                         // org/argouml/language/java/reveng/Java.g:815:33: 'throws' qualifiedNameList
 3761  
                                         {
 3762  0
                                         match(input,103,FOLLOW_103_in_voidInterfaceMethodDeclaratorRest2617); if (state.failed) return;
 3763  0
                                         pushFollow(FOLLOW_qualifiedNameList_in_voidInterfaceMethodDeclaratorRest2619);
 3764  0
                                         qualifiedNameList();
 3765  0
                                         state._fsp--;
 3766  0
                                         if (state.failed) return;
 3767  
                                         }
 3768  
                                         break;
 3769  
 
 3770  
                         }
 3771  
 
 3772  4
                         match(input,50,FOLLOW_50_in_voidInterfaceMethodDeclaratorRest2631); if (state.failed) return;
 3773  4
                         if ( state.backtracking==0 ) {
 3774  4
                                     if (isOutestCompStat && level > 0) {
 3775  8
                                         setMethod(getModeller().addOperation(modifiers, null,
 3776  4
                                             "void", name, param, getJavadocComment(),
 3777  
                                             (parserMode == MODE_IMPORT_PASS2)));
 3778  4
                                         setMethod(null);
 3779  
                                     }
 3780  
                                 }
 3781  
                         }
 3782  
 
 3783  
                 }
 3784  0
                 catch (RecognitionException re) {
 3785  0
                         reportError(re);
 3786  0
                         recover(input,re);
 3787  
                 }
 3788  
                 finally {
 3789  
                         // do for sure before leaving
 3790  4
                         if ( state.backtracking>0 ) { memoize(input, 39, voidInterfaceMethodDeclaratorRest_StartIndex); }
 3791  
 
 3792  0
                 }
 3793  4
         }
 3794  
         // $ANTLR end "voidInterfaceMethodDeclaratorRest"
 3795  
 
 3796  
 
 3797  
 
 3798  
         // $ANTLR start "constructorDeclaratorRest"
 3799  
         // org/argouml/language/java/reveng/Java.g:828:1: constructorDeclaratorRest[String name, short modifiers] : param= formalParameters ( 'throws' qualifiedNameList )? constructorBody ;
 3800  
         public final void constructorDeclaratorRest(String name, short modifiers) throws RecognitionException {
 3801  14
                 int constructorDeclaratorRest_StartIndex = input.index();
 3802  
 
 3803  14
                 List<ParameterDeclaration> param =null;
 3804  
 
 3805  
 
 3806  14
                         boolean isOutestCompStat = !isInCompoundStatement();
 3807  
                     
 3808  
                 try {
 3809  14
                         if ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return; }
 3810  
 
 3811  
                         // org/argouml/language/java/reveng/Java.g:832:5: (param= formalParameters ( 'throws' qualifiedNameList )? constructorBody )
 3812  
                         // org/argouml/language/java/reveng/Java.g:832:9: param= formalParameters ( 'throws' qualifiedNameList )? constructorBody
 3813  
                         {
 3814  14
                         pushFollow(FOLLOW_formalParameters_in_constructorDeclaratorRest2680);
 3815  14
                         param=formalParameters();
 3816  14
                         state._fsp--;
 3817  14
                         if (state.failed) return;
 3818  14
                         if ( state.backtracking==0 ) {
 3819  14
                                     if (isOutestCompStat && level > 0) {
 3820  28
                                         setMethod(getModeller().addOperation(modifiers,
 3821  14
                                         null, null, name, param, getJavadocComment(),
 3822  
                                         (parserMode == MODE_IMPORT_PASS2)));
 3823  
                                     }
 3824  
                                 }
 3825  
                         // org/argouml/language/java/reveng/Java.g:840:9: ( 'throws' qualifiedNameList )?
 3826  14
                         int alt57=2;
 3827  14
                         int LA57_0 = input.LA(1);
 3828  14
                         if ( (LA57_0==103) ) {
 3829  0
                                 alt57=1;
 3830  
                         }
 3831  14
                         switch (alt57) {
 3832  
                                 case 1 :
 3833  
                                         // org/argouml/language/java/reveng/Java.g:840:10: 'throws' qualifiedNameList
 3834  
                                         {
 3835  0
                                         match(input,103,FOLLOW_103_in_constructorDeclaratorRest2701); if (state.failed) return;
 3836  0
                                         pushFollow(FOLLOW_qualifiedNameList_in_constructorDeclaratorRest2703);
 3837  0
                                         qualifiedNameList();
 3838  0
                                         state._fsp--;
 3839  0
                                         if (state.failed) return;
 3840  
                                         }
 3841  
                                         break;
 3842  
 
 3843  
                         }
 3844  
 
 3845  14
                         pushFollow(FOLLOW_constructorBody_in_constructorDeclaratorRest2715);
 3846  14
                         constructorBody();
 3847  14
                         state._fsp--;
 3848  14
                         if (state.failed) return;
 3849  14
                         if ( state.backtracking==0 ) {
 3850  14
                                     if (isOutestCompStat && level > 0) {
 3851  28
                                         getModeller().addBodyToOperation(getMethod(),
 3852  14
                                             level > 1 ? getBody() : "");
 3853  14
                                         setMethod(null);
 3854  14
                                         setBody(null);
 3855  
                                     }
 3856  
                                 }
 3857  
                         }
 3858  
 
 3859  
                 }
 3860  0
                 catch (RecognitionException re) {
 3861  0
                         reportError(re);
 3862  0
                         recover(input,re);
 3863  
                 }
 3864  
                 finally {
 3865  
                         // do for sure before leaving
 3866  14
                         if ( state.backtracking>0 ) { memoize(input, 40, constructorDeclaratorRest_StartIndex); }
 3867  
 
 3868  0
                 }
 3869  14
         }
 3870  
         // $ANTLR end "constructorDeclaratorRest"
 3871  
 
 3872  
 
 3873  
 
 3874  
         // $ANTLR start "constantDeclarator"
 3875  
         // org/argouml/language/java/reveng/Java.g:853:1: constantDeclarator[String javadoc, short modifiers, String t] : id= Identifier constantDeclaratorRest[javadoc, name, modifiers, t] ;
 3876  
         public final void constantDeclarator(String javadoc, short modifiers, String t) throws RecognitionException {
 3877  0
                 int constantDeclarator_StartIndex = input.index();
 3878  
 
 3879  0
                 Token id=null;
 3880  
 
 3881  
 
 3882  0
                         String name = null;
 3883  
                     
 3884  
                 try {
 3885  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 41) ) { return; }
 3886  
 
 3887  
                         // org/argouml/language/java/reveng/Java.g:857:5: (id= Identifier constantDeclaratorRest[javadoc, name, modifiers, t] )
 3888  
                         // org/argouml/language/java/reveng/Java.g:857:9: id= Identifier constantDeclaratorRest[javadoc, name, modifiers, t]
 3889  
                         {
 3890  0
                         id=(Token)match(input,Identifier,FOLLOW_Identifier_in_constantDeclarator2764); if (state.failed) return;
 3891  0
                         if ( state.backtracking==0 ) { name = (id!=null?id.getText():null); }
 3892  0
                         pushFollow(FOLLOW_constantDeclaratorRest_in_constantDeclarator2776);
 3893  0
                         constantDeclaratorRest(javadoc, name, modifiers, t);
 3894  0
                         state._fsp--;
 3895  0
                         if (state.failed) return;
 3896  
                         }
 3897  
 
 3898  
                 }
 3899  0
                 catch (RecognitionException re) {
 3900  0
                         reportError(re);
 3901  0
                         recover(input,re);
 3902  
                 }
 3903  
                 finally {
 3904  
                         // do for sure before leaving
 3905  0
                         if ( state.backtracking>0 ) { memoize(input, 41, constantDeclarator_StartIndex); }
 3906  
 
 3907  0
                 }
 3908  0
         }
 3909  
         // $ANTLR end "constantDeclarator"
 3910  
 
 3911  
 
 3912  
 
 3913  
         // $ANTLR start "variableDeclarators"
 3914  
         // org/argouml/language/java/reveng/Java.g:861:1: variableDeclarators[String javadoc, short modifiers, String t] : variableDeclarator[javadoc, modifiers, t] ( ',' variableDeclarator[javadoc, modifiers, t] )* ;
 3915  
         public final void variableDeclarators(String javadoc, short modifiers, String t) throws RecognitionException {
 3916  33
                 int variableDeclarators_StartIndex = input.index();
 3917  
 
 3918  
                 try {
 3919  33
                         if ( state.backtracking>0 && alreadyParsedRule(input, 42) ) { return; }
 3920  
 
 3921  
                         // org/argouml/language/java/reveng/Java.g:862:5: ( variableDeclarator[javadoc, modifiers, t] ( ',' variableDeclarator[javadoc, modifiers, t] )* )
 3922  
                         // org/argouml/language/java/reveng/Java.g:862:9: variableDeclarator[javadoc, modifiers, t] ( ',' variableDeclarator[javadoc, modifiers, t] )*
 3923  
                         {
 3924  33
                         pushFollow(FOLLOW_variableDeclarator_in_variableDeclarators2797);
 3925  33
                         variableDeclarator(javadoc, modifiers, t);
 3926  33
                         state._fsp--;
 3927  33
                         if (state.failed) return;
 3928  
                         // org/argouml/language/java/reveng/Java.g:863:9: ( ',' variableDeclarator[javadoc, modifiers, t] )*
 3929  
                         loop58:
 3930  
                         while (true) {
 3931  33
                                 int alt58=2;
 3932  33
                                 int LA58_0 = input.LA(1);
 3933  33
                                 if ( (LA58_0==41) ) {
 3934  0
                                         alt58=1;
 3935  
                                 }
 3936  
 
 3937  33
                                 switch (alt58) {
 3938  
                                 case 1 :
 3939  
                                         // org/argouml/language/java/reveng/Java.g:863:10: ',' variableDeclarator[javadoc, modifiers, t]
 3940  
                                         {
 3941  0
                                         match(input,41,FOLLOW_41_in_variableDeclarators2809); if (state.failed) return;
 3942  0
                                         pushFollow(FOLLOW_variableDeclarator_in_variableDeclarators2811);
 3943  0
                                         variableDeclarator(javadoc, modifiers, t);
 3944  0
                                         state._fsp--;
 3945  0
                                         if (state.failed) return;
 3946  
                                         }
 3947  
                                         break;
 3948  
 
 3949  
                                 default :
 3950  33
                                         break loop58;
 3951  
                                 }
 3952  0
                         }
 3953  
 
 3954  
                         }
 3955  
 
 3956  
                 }
 3957  0
                 catch (RecognitionException re) {
 3958  0
                         reportError(re);
 3959  0
                         recover(input,re);
 3960  
                 }
 3961  
                 finally {
 3962  
                         // do for sure before leaving
 3963  33
                         if ( state.backtracking>0 ) { memoize(input, 42, variableDeclarators_StartIndex); }
 3964  
 
 3965  0
                 }
 3966  33
         }
 3967  
         // $ANTLR end "variableDeclarators"
 3968  
 
 3969  
 
 3970  
 
 3971  
         // $ANTLR start "variableDeclarator"
 3972  
         // org/argouml/language/java/reveng/Java.g:866:1: variableDeclarator[String javadoc, short modifiers, String t] : vdi= variableDeclaratorId (eqvi= equalsVariableInitializer )? ;
 3973  
         public final void variableDeclarator(String javadoc, short modifiers, String t) throws RecognitionException {
 3974  33
                 int variableDeclarator_StartIndex = input.index();
 3975  
 
 3976  33
                 ParserRuleReturnScope vdi =null;
 3977  33
                 ParserRuleReturnScope eqvi =null;
 3978  
 
 3979  
 
 3980  33
                         String b = "";
 3981  33
                         String id = null;
 3982  
                         int ix;
 3983  33
                         String init = null;
 3984  
                     
 3985  
                 try {
 3986  33
                         if ( state.backtracking>0 && alreadyParsedRule(input, 43) ) { return; }
 3987  
 
 3988  
                         // org/argouml/language/java/reveng/Java.g:873:5: (vdi= variableDeclaratorId (eqvi= equalsVariableInitializer )? )
 3989  
                         // org/argouml/language/java/reveng/Java.g:873:9: vdi= variableDeclaratorId (eqvi= equalsVariableInitializer )?
 3990  
                         {
 3991  33
                         pushFollow(FOLLOW_variableDeclaratorId_in_variableDeclarator2844);
 3992  33
                         vdi=variableDeclaratorId();
 3993  33
                         state._fsp--;
 3994  33
                         if (state.failed) return;
 3995  33
                         if ( state.backtracking==0 ) {
 3996  33
                                     id = (vdi!=null?input.toString(vdi.start,vdi.stop):null);
 3997  33
                                     ix = id.indexOf('[');
 3998  33
                                     if (ix > 0) {
 3999  0
                                         b = id.substring(ix);
 4000  0
                                         id = id.substring(0, ix - 1);
 4001  
                                     }
 4002  
                                 }
 4003  
                         // org/argouml/language/java/reveng/Java.g:882:9: (eqvi= equalsVariableInitializer )?
 4004  33
                         int alt59=2;
 4005  33
                         int LA59_0 = input.LA(1);
 4006  33
                         if ( (LA59_0==52) ) {
 4007  19
                                 alt59=1;
 4008  
                         }
 4009  33
                         switch (alt59) {
 4010  
                                 case 1 :
 4011  
                                         // org/argouml/language/java/reveng/Java.g:883:13: eqvi= equalsVariableInitializer
 4012  
                                         {
 4013  19
                                         if ( state.backtracking==0 ) {
 4014  19
                                                         if ((parserMode & MODE_REVENG_SEQUENCE) != 0
 4015  0
                                                             && "new".equals(input.LT(2).getText())) {
 4016  0
                                                             createdObjectVarName = input.LT(0).getText();
 4017  
                                                         }
 4018  
                                                     }
 4019  19
                                         pushFollow(FOLLOW_equalsVariableInitializer_in_variableDeclarator2896);
 4020  19
                                         eqvi=equalsVariableInitializer();
 4021  19
                                         state._fsp--;
 4022  19
                                         if (state.failed) return;
 4023  19
                                         if ( state.backtracking==0 ) {
 4024  19
                                                         init = (eqvi!=null?input.toString(eqvi.start,eqvi.stop):null).substring(1);
 4025  19
                                                         createdObjectVarName = null;
 4026  
                                                     }
 4027  
                                         }
 4028  
                                         break;
 4029  
 
 4030  
                         }
 4031  
 
 4032  33
                         if ( state.backtracking==0 ) {
 4033  33
                                     if (!isInCompoundStatement() && level > 0) {
 4034  33
                                         getModeller().addAttribute(modifiers, t + b, id, init, javadoc,
 4035  
                                             (parserMode == MODE_IMPORT_PASS2));
 4036  
                                     }
 4037  33
                                     if ((parserMode & MODE_REVENG_SEQUENCE) != 0) {
 4038  0
                                         getModeller().addLocalVariableDeclaration(t + b, id);
 4039  
                                     }
 4040  
                                 }
 4041  
                         }
 4042  
 
 4043  
                 }
 4044  0
                 catch (RecognitionException re) {
 4045  0
                         reportError(re);
 4046  0
                         recover(input,re);
 4047  
                 }
 4048  
                 finally {
 4049  
                         // do for sure before leaving
 4050  33
                         if ( state.backtracking>0 ) { memoize(input, 43, variableDeclarator_StartIndex); }
 4051  
 
 4052  0
                 }
 4053  33
         }
 4054  
         // $ANTLR end "variableDeclarator"
 4055  
 
 4056  
 
 4057  
 
 4058  
         // $ANTLR start "constantDeclaratorsRest"
 4059  
         // org/argouml/language/java/reveng/Java.g:906:1: constantDeclaratorsRest[String javadoc, String name, short modifiers, String t] : constantDeclaratorRest[javadoc, name, modifiers, t] ( ',' constantDeclarator[javadoc, modifiers, t] )* ;
 4060  
         public final void constantDeclaratorsRest(String javadoc, String name, short modifiers, String t) throws RecognitionException {
 4061  0
                 int constantDeclaratorsRest_StartIndex = input.index();
 4062  
 
 4063  
                 try {
 4064  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 44) ) { return; }
 4065  
 
 4066  
                         // org/argouml/language/java/reveng/Java.g:907:5: ( constantDeclaratorRest[javadoc, name, modifiers, t] ( ',' constantDeclarator[javadoc, modifiers, t] )* )
 4067  
                         // org/argouml/language/java/reveng/Java.g:907:9: constantDeclaratorRest[javadoc, name, modifiers, t] ( ',' constantDeclarator[javadoc, modifiers, t] )*
 4068  
                         {
 4069  0
                         pushFollow(FOLLOW_constantDeclaratorRest_in_constantDeclaratorsRest2951);
 4070  0
                         constantDeclaratorRest(javadoc, name, modifiers, t);
 4071  0
                         state._fsp--;
 4072  0
                         if (state.failed) return;
 4073  
                         // org/argouml/language/java/reveng/Java.g:908:9: ( ',' constantDeclarator[javadoc, modifiers, t] )*
 4074  
                         loop60:
 4075  
                         while (true) {
 4076  0
                                 int alt60=2;
 4077  0
                                 int LA60_0 = input.LA(1);
 4078  0
                                 if ( (LA60_0==41) ) {
 4079  0
                                         alt60=1;
 4080  
                                 }
 4081  
 
 4082  0
                                 switch (alt60) {
 4083  
                                 case 1 :
 4084  
                                         // org/argouml/language/java/reveng/Java.g:908:10: ',' constantDeclarator[javadoc, modifiers, t]
 4085  
                                         {
 4086  0
                                         match(input,41,FOLLOW_41_in_constantDeclaratorsRest2963); if (state.failed) return;
 4087  0
                                         pushFollow(FOLLOW_constantDeclarator_in_constantDeclaratorsRest2965);
 4088  0
                                         constantDeclarator(javadoc, modifiers, t);
 4089  0
                                         state._fsp--;
 4090  0
                                         if (state.failed) return;
 4091  
                                         }
 4092  
                                         break;
 4093  
 
 4094  
                                 default :
 4095  0
                                         break loop60;
 4096  
                                 }
 4097  0
                         }
 4098  
 
 4099  
                         }
 4100  
 
 4101  
                 }
 4102  0
                 catch (RecognitionException re) {
 4103  0
                         reportError(re);
 4104  0
                         recover(input,re);
 4105  
                 }
 4106  
                 finally {
 4107  
                         // do for sure before leaving
 4108  0
                         if ( state.backtracking>0 ) { memoize(input, 44, constantDeclaratorsRest_StartIndex); }
 4109  
 
 4110  0
                 }
 4111  0
         }
 4112  
         // $ANTLR end "constantDeclaratorsRest"
 4113  
 
 4114  
 
 4115  
 
 4116  
         // $ANTLR start "constantDeclaratorRest"
 4117  
         // org/argouml/language/java/reveng/Java.g:911:1: constantDeclaratorRest[String javadoc, String name, short modifiers, String t] : ( '[' ']' )* eqvi= equalsVariableInitializer ;
 4118  
         public final void constantDeclaratorRest(String javadoc, String name, short modifiers, String t) throws RecognitionException {
 4119  0
                 int constantDeclaratorRest_StartIndex = input.index();
 4120  
 
 4121  0
                 ParserRuleReturnScope eqvi =null;
 4122  
 
 4123  
 
 4124  0
                         StringBuffer sb = new StringBuffer(80);
 4125  0
                         if (t != null) {
 4126  0
                             sb.append(t);
 4127  
                         }
 4128  0
                         String trackedSoFar = null;
 4129  0
                         String init = null;
 4130  
                     
 4131  
                 try {
 4132  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 45) ) { return; }
 4133  
 
 4134  
                         // org/argouml/language/java/reveng/Java.g:920:5: ( ( '[' ']' )* eqvi= equalsVariableInitializer )
 4135  
                         // org/argouml/language/java/reveng/Java.g:920:9: ( '[' ']' )* eqvi= equalsVariableInitializer
 4136  
                         {
 4137  
                         // org/argouml/language/java/reveng/Java.g:920:9: ( '[' ']' )*
 4138  
                         loop61:
 4139  
                         while (true) {
 4140  0
                                 int alt61=2;
 4141  0
                                 int LA61_0 = input.LA(1);
 4142  0
                                 if ( (LA61_0==57) ) {
 4143  0
                                         alt61=1;
 4144  
                                 }
 4145  
 
 4146  0
                                 switch (alt61) {
 4147  
                                 case 1 :
 4148  
                                         // org/argouml/language/java/reveng/Java.g:920:10: '[' ']'
 4149  
                                         {
 4150  0
                                         match(input,57,FOLLOW_57_in_constantDeclaratorRest2997); if (state.failed) return;
 4151  0
                                         match(input,58,FOLLOW_58_in_constantDeclaratorRest2999); if (state.failed) return;
 4152  0
                                         if ( state.backtracking==0 ) { sb.append("[]"); }
 4153  
                                         }
 4154  
                                         break;
 4155  
 
 4156  
                                 default :
 4157  0
                                         break loop61;
 4158  
                                 }
 4159  0
                         }
 4160  
 
 4161  0
                         if ( state.backtracking==0 ) {
 4162  0
                                     if ((parserMode & MODE_REVENG_SEQUENCE) != 0
 4163  0
                                         && "new".equals(input.LT(2).getText())) {
 4164  0
                                         createdObjectVarName = input.LT(0).getText();
 4165  
                                     }
 4166  
                                 }
 4167  0
                         pushFollow(FOLLOW_equalsVariableInitializer_in_constantDeclaratorRest3028);
 4168  0
                         eqvi=equalsVariableInitializer();
 4169  0
                         state._fsp--;
 4170  0
                         if (state.failed) return;
 4171  0
                         if ( state.backtracking==0 ) {
 4172  0
                                     init = (eqvi!=null?input.toString(eqvi.start,eqvi.stop):null).substring(1);
 4173  0
                                     createdObjectVarName = null;
 4174  0
                                     if (!isInCompoundStatement() && level > 0) {
 4175  0
                                         getModeller().addAttribute(modifiers, sb.toString(), name,
 4176  
                                             init, javadoc, (parserMode == MODE_IMPORT_PASS2));
 4177  
                                     }
 4178  0
                                     if ((parserMode & MODE_REVENG_SEQUENCE) != 0) {
 4179  0
                                         getModeller().addLocalVariableDeclaration(sb.toString(), name);
 4180  
                                     }
 4181  
                                 }
 4182  
                         }
 4183  
 
 4184  
                 }
 4185  0
                 catch (RecognitionException re) {
 4186  0
                         reportError(re);
 4187  0
                         recover(input,re);
 4188  
                 }
 4189  
                 finally {
 4190  
                         // do for sure before leaving
 4191  0
                         if ( state.backtracking>0 ) { memoize(input, 45, constantDeclaratorRest_StartIndex); }
 4192  
 
 4193  0
                 }
 4194  0
         }
 4195  
         // $ANTLR end "constantDeclaratorRest"
 4196  
 
 4197  
 
 4198  77
         public static class variableDeclaratorId_return extends ParserRuleReturnScope {
 4199  
         };
 4200  
 
 4201  
 
 4202  
         // $ANTLR start "variableDeclaratorId"
 4203  
         // org/argouml/language/java/reveng/Java.g:941:1: variableDeclaratorId : Identifier ( '[' ']' )* ;
 4204  
         public final JavaParser.variableDeclaratorId_return variableDeclaratorId() throws RecognitionException {
 4205  77
                 JavaParser.variableDeclaratorId_return retval = new JavaParser.variableDeclaratorId_return();
 4206  77
                 retval.start = input.LT(1);
 4207  77
                 int variableDeclaratorId_StartIndex = input.index();
 4208  
 
 4209  
                 try {
 4210  77
                         if ( state.backtracking>0 && alreadyParsedRule(input, 46) ) { return retval; }
 4211  
 
 4212  
                         // org/argouml/language/java/reveng/Java.g:942:5: ( Identifier ( '[' ']' )* )
 4213  
                         // org/argouml/language/java/reveng/Java.g:942:9: Identifier ( '[' ']' )*
 4214  
                         {
 4215  77
                         match(input,Identifier,FOLLOW_Identifier_in_variableDeclaratorId3057); if (state.failed) return retval;
 4216  
                         // org/argouml/language/java/reveng/Java.g:942:20: ( '[' ']' )*
 4217  
                         loop62:
 4218  
                         while (true) {
 4219  77
                                 int alt62=2;
 4220  77
                                 int LA62_0 = input.LA(1);
 4221  77
                                 if ( (LA62_0==57) ) {
 4222  0
                                         alt62=1;
 4223  
                                 }
 4224  
 
 4225  77
                                 switch (alt62) {
 4226  
                                 case 1 :
 4227  
                                         // org/argouml/language/java/reveng/Java.g:942:21: '[' ']'
 4228  
                                         {
 4229  0
                                         match(input,57,FOLLOW_57_in_variableDeclaratorId3060); if (state.failed) return retval;
 4230  0
                                         match(input,58,FOLLOW_58_in_variableDeclaratorId3062); if (state.failed) return retval;
 4231  
                                         }
 4232  
                                         break;
 4233  
 
 4234  
                                 default :
 4235  77
                                         break loop62;
 4236  
                                 }
 4237  0
                         }
 4238  
 
 4239  
                         }
 4240  
 
 4241  77
                         retval.stop = input.LT(-1);
 4242  
 
 4243  
                 }
 4244  0
                 catch (RecognitionException re) {
 4245  0
                         reportError(re);
 4246  0
                         recover(input,re);
 4247  
                 }
 4248  
                 finally {
 4249  
                         // do for sure before leaving
 4250  77
                         if ( state.backtracking>0 ) { memoize(input, 46, variableDeclaratorId_StartIndex); }
 4251  
 
 4252  0
                 }
 4253  77
                 return retval;
 4254  
         }
 4255  
         // $ANTLR end "variableDeclaratorId"
 4256  
 
 4257  
 
 4258  19
         public static class equalsVariableInitializer_return extends ParserRuleReturnScope {
 4259  
         };
 4260  
 
 4261  
 
 4262  
         // $ANTLR start "equalsVariableInitializer"
 4263  
         // org/argouml/language/java/reveng/Java.g:945:1: equalsVariableInitializer : '=' variableInitializer ;
 4264  
         public final JavaParser.equalsVariableInitializer_return equalsVariableInitializer() throws RecognitionException {
 4265  19
                 JavaParser.equalsVariableInitializer_return retval = new JavaParser.equalsVariableInitializer_return();
 4266  19
                 retval.start = input.LT(1);
 4267  19
                 int equalsVariableInitializer_StartIndex = input.index();
 4268  
 
 4269  
                 try {
 4270  19
                         if ( state.backtracking>0 && alreadyParsedRule(input, 47) ) { return retval; }
 4271  
 
 4272  
                         // org/argouml/language/java/reveng/Java.g:946:5: ( '=' variableInitializer )
 4273  
                         // org/argouml/language/java/reveng/Java.g:947:9: '=' variableInitializer
 4274  
                         {
 4275  19
                         match(input,52,FOLLOW_52_in_equalsVariableInitializer3092); if (state.failed) return retval;
 4276  19
                         pushFollow(FOLLOW_variableInitializer_in_equalsVariableInitializer3094);
 4277  19
                         variableInitializer();
 4278  19
                         state._fsp--;
 4279  19
                         if (state.failed) return retval;
 4280  
                         }
 4281  
 
 4282  19
                         retval.stop = input.LT(-1);
 4283  
 
 4284  
                 }
 4285  0
                 catch (RecognitionException re) {
 4286  0
                         reportError(re);
 4287  0
                         recover(input,re);
 4288  
                 }
 4289  
                 finally {
 4290  
                         // do for sure before leaving
 4291  19
                         if ( state.backtracking>0 ) { memoize(input, 47, equalsVariableInitializer_StartIndex); }
 4292  
 
 4293  0
                 }
 4294  19
                 return retval;
 4295  
         }
 4296  
         // $ANTLR end "equalsVariableInitializer"
 4297  
 
 4298  
 
 4299  
 
 4300  
         // $ANTLR start "variableInitializer"
 4301  
         // org/argouml/language/java/reveng/Java.g:950:1: variableInitializer : ( arrayInitializer | expression );
 4302  
         public final void variableInitializer() throws RecognitionException {
 4303  19
                 int variableInitializer_StartIndex = input.index();
 4304  
 
 4305  
                 try {
 4306  19
                         if ( state.backtracking>0 && alreadyParsedRule(input, 48) ) { return; }
 4307  
 
 4308  
                         // org/argouml/language/java/reveng/Java.g:951:5: ( arrayInitializer | expression )
 4309  19
                         int alt63=2;
 4310  19
                         int LA63_0 = input.LA(1);
 4311  19
                         if ( (LA63_0==110) ) {
 4312  0
                                 alt63=1;
 4313  
                         }
 4314  19
                         else if ( ((LA63_0 >= CharacterLiteral && LA63_0 <= DecimalLiteral)||LA63_0==FloatingPointLiteral||(LA63_0 >= HexLiteral && LA63_0 <= Identifier)||(LA63_0 >= OctalLiteral && LA63_0 <= StringLiteral)||LA63_0==27||LA63_0==34||(LA63_0 >= 38 && LA63_0 <= 39)||(LA63_0 >= 42 && LA63_0 <= 43)||LA63_0==62||LA63_0==64||LA63_0==67||LA63_0==72||LA63_0==75||LA63_0==78||LA63_0==84||LA63_0==86||(LA63_0 >= 88 && LA63_0 <= 89)||LA63_0==95||LA63_0==98||LA63_0==101||LA63_0==105||LA63_0==107||LA63_0==115) ) {
 4315  19
                                 alt63=2;
 4316  
                         }
 4317  
 
 4318  
                         else {
 4319  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 4320  0
                                 NoViableAltException nvae =
 4321  
                                         new NoViableAltException("", 63, 0, input);
 4322  0
                                 throw nvae;
 4323  
                         }
 4324  
 
 4325  19
                         switch (alt63) {
 4326  
                                 case 1 :
 4327  
                                         // org/argouml/language/java/reveng/Java.g:951:9: arrayInitializer
 4328  
                                         {
 4329  0
                                         pushFollow(FOLLOW_arrayInitializer_in_variableInitializer3113);
 4330  0
                                         arrayInitializer();
 4331  0
                                         state._fsp--;
 4332  0
                                         if (state.failed) return;
 4333  
                                         }
 4334  
                                         break;
 4335  
                                 case 2 :
 4336  
                                         // org/argouml/language/java/reveng/Java.g:952:9: expression
 4337  
                                         {
 4338  19
                                         pushFollow(FOLLOW_expression_in_variableInitializer3123);
 4339  19
                                         expression();
 4340  19
                                         state._fsp--;
 4341  19
                                         if (state.failed) return;
 4342  
                                         }
 4343  
                                         break;
 4344  
 
 4345  
                         }
 4346  
                 }
 4347  0
                 catch (RecognitionException re) {
 4348  0
                         reportError(re);
 4349  0
                         recover(input,re);
 4350  
                 }
 4351  
                 finally {
 4352  
                         // do for sure before leaving
 4353  19
                         if ( state.backtracking>0 ) { memoize(input, 48, variableInitializer_StartIndex); }
 4354  
 
 4355  0
                 }
 4356  19
         }
 4357  
         // $ANTLR end "variableInitializer"
 4358  
 
 4359  
 
 4360  
 
 4361  
         // $ANTLR start "arrayInitializer"
 4362  
         // org/argouml/language/java/reveng/Java.g:955:1: arrayInitializer : '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' ;
 4363  
         public final void arrayInitializer() throws RecognitionException {
 4364  0
                 int arrayInitializer_StartIndex = input.index();
 4365  
 
 4366  
                 try {
 4367  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 49) ) { return; }
 4368  
 
 4369  
                         // org/argouml/language/java/reveng/Java.g:956:5: ( '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}' )
 4370  
                         // org/argouml/language/java/reveng/Java.g:956:9: '{' ( variableInitializer ( ',' variableInitializer )* ( ',' )? )? '}'
 4371  
                         {
 4372  0
                         match(input,110,FOLLOW_110_in_arrayInitializer3150); if (state.failed) return;
 4373  
                         // org/argouml/language/java/reveng/Java.g:956:13: ( variableInitializer ( ',' variableInitializer )* ( ',' )? )?
 4374  0
                         int alt66=2;
 4375  0
                         int LA66_0 = input.LA(1);
 4376  0
                         if ( ((LA66_0 >= CharacterLiteral && LA66_0 <= DecimalLiteral)||LA66_0==FloatingPointLiteral||(LA66_0 >= HexLiteral && LA66_0 <= Identifier)||(LA66_0 >= OctalLiteral && LA66_0 <= StringLiteral)||LA66_0==27||LA66_0==34||(LA66_0 >= 38 && LA66_0 <= 39)||(LA66_0 >= 42 && LA66_0 <= 43)||LA66_0==62||LA66_0==64||LA66_0==67||LA66_0==72||LA66_0==75||LA66_0==78||LA66_0==84||LA66_0==86||(LA66_0 >= 88 && LA66_0 <= 89)||LA66_0==95||LA66_0==98||LA66_0==101||LA66_0==105||LA66_0==107||LA66_0==110||LA66_0==115) ) {
 4377  0
                                 alt66=1;
 4378  
                         }
 4379  0
                         switch (alt66) {
 4380  
                                 case 1 :
 4381  
                                         // org/argouml/language/java/reveng/Java.g:956:14: variableInitializer ( ',' variableInitializer )* ( ',' )?
 4382  
                                         {
 4383  0
                                         pushFollow(FOLLOW_variableInitializer_in_arrayInitializer3153);
 4384  0
                                         variableInitializer();
 4385  0
                                         state._fsp--;
 4386  0
                                         if (state.failed) return;
 4387  
                                         // org/argouml/language/java/reveng/Java.g:956:34: ( ',' variableInitializer )*
 4388  
                                         loop64:
 4389  
                                         while (true) {
 4390  0
                                                 int alt64=2;
 4391  0
                                                 int LA64_0 = input.LA(1);
 4392  0
                                                 if ( (LA64_0==41) ) {
 4393  0
                                                         int LA64_1 = input.LA(2);
 4394  0
                                                         if ( ((LA64_1 >= CharacterLiteral && LA64_1 <= DecimalLiteral)||LA64_1==FloatingPointLiteral||(LA64_1 >= HexLiteral && LA64_1 <= Identifier)||(LA64_1 >= OctalLiteral && LA64_1 <= StringLiteral)||LA64_1==27||LA64_1==34||(LA64_1 >= 38 && LA64_1 <= 39)||(LA64_1 >= 42 && LA64_1 <= 43)||LA64_1==62||LA64_1==64||LA64_1==67||LA64_1==72||LA64_1==75||LA64_1==78||LA64_1==84||LA64_1==86||(LA64_1 >= 88 && LA64_1 <= 89)||LA64_1==95||LA64_1==98||LA64_1==101||LA64_1==105||LA64_1==107||LA64_1==110||LA64_1==115) ) {
 4395  0
                                                                 alt64=1;
 4396  
                                                         }
 4397  
 
 4398  
                                                 }
 4399  
 
 4400  0
                                                 switch (alt64) {
 4401  
                                                 case 1 :
 4402  
                                                         // org/argouml/language/java/reveng/Java.g:956:35: ',' variableInitializer
 4403  
                                                         {
 4404  0
                                                         match(input,41,FOLLOW_41_in_arrayInitializer3156); if (state.failed) return;
 4405  0
                                                         pushFollow(FOLLOW_variableInitializer_in_arrayInitializer3158);
 4406  0
                                                         variableInitializer();
 4407  0
                                                         state._fsp--;
 4408  0
                                                         if (state.failed) return;
 4409  
                                                         }
 4410  
                                                         break;
 4411  
 
 4412  
                                                 default :
 4413  0
                                                         break loop64;
 4414  
                                                 }
 4415  0
                                         }
 4416  
 
 4417  
                                         // org/argouml/language/java/reveng/Java.g:956:61: ( ',' )?
 4418  0
                                         int alt65=2;
 4419  0
                                         int LA65_0 = input.LA(1);
 4420  0
                                         if ( (LA65_0==41) ) {
 4421  0
                                                 alt65=1;
 4422  
                                         }
 4423  0
                                         switch (alt65) {
 4424  
                                                 case 1 :
 4425  
                                                         // org/argouml/language/java/reveng/Java.g:956:62: ','
 4426  
                                                         {
 4427  0
                                                         match(input,41,FOLLOW_41_in_arrayInitializer3163); if (state.failed) return;
 4428  
                                                         }
 4429  
                                                         break;
 4430  
 
 4431  
                                         }
 4432  
 
 4433  
                                         }
 4434  
                                         break;
 4435  
 
 4436  
                         }
 4437  
 
 4438  0
                         match(input,114,FOLLOW_114_in_arrayInitializer3170); if (state.failed) return;
 4439  
                         }
 4440  
 
 4441  
                 }
 4442  0
                 catch (RecognitionException re) {
 4443  0
                         reportError(re);
 4444  0
                         recover(input,re);
 4445  
                 }
 4446  
                 finally {
 4447  
                         // do for sure before leaving
 4448  0
                         if ( state.backtracking>0 ) { memoize(input, 49, arrayInitializer_StartIndex); }
 4449  
 
 4450  0
                 }
 4451  0
         }
 4452  
         // $ANTLR end "arrayInitializer"
 4453  
 
 4454  
 
 4455  
 
 4456  
         // $ANTLR start "modifier"
 4457  
         // org/argouml/language/java/reveng/Java.g:959:1: modifier returns [short m = 0] : ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' );
 4458  
         public final short modifier() throws RecognitionException {
 4459  132
                 short m =  0;
 4460  
 
 4461  132
                 int modifier_StartIndex = input.index();
 4462  
 
 4463  
                 try {
 4464  132
                         if ( state.backtracking>0 && alreadyParsedRule(input, 50) ) { return m; }
 4465  
 
 4466  
                         // org/argouml/language/java/reveng/Java.g:960:5: ( annotation | 'public' | 'protected' | 'private' | 'static' | 'abstract' | 'final' | 'native' | 'synchronized' | 'transient' | 'volatile' | 'strictfp' )
 4467  132
                         int alt67=12;
 4468  132
                         switch ( input.LA(1) ) {
 4469  
                         case 56:
 4470  
                                 {
 4471  0
                                 alt67=1;
 4472  
                                 }
 4473  0
                                 break;
 4474  
                         case 93:
 4475  
                                 {
 4476  40
                                 alt67=2;
 4477  
                                 }
 4478  40
                                 break;
 4479  
                         case 92:
 4480  
                                 {
 4481  24
                                 alt67=3;
 4482  
                                 }
 4483  24
                                 break;
 4484  
                         case 91:
 4485  
                                 {
 4486  16
                                 alt67=4;
 4487  
                                 }
 4488  16
                                 break;
 4489  
                         case 96:
 4490  
                                 {
 4491  33
                                 alt67=5;
 4492  
                                 }
 4493  33
                                 break;
 4494  
                         case 61:
 4495  
                                 {
 4496  7
                                 alt67=6;
 4497  
                                 }
 4498  7
                                 break;
 4499  
                         case 76:
 4500  
                                 {
 4501  12
                                 alt67=7;
 4502  
                                 }
 4503  12
                                 break;
 4504  
                         case 87:
 4505  
                                 {
 4506  0
                                 alt67=8;
 4507  
                                 }
 4508  0
                                 break;
 4509  
                         case 100:
 4510  
                                 {
 4511  0
                                 alt67=9;
 4512  
                                 }
 4513  0
                                 break;
 4514  
                         case 104:
 4515  
                                 {
 4516  0
                                 alt67=10;
 4517  
                                 }
 4518  0
                                 break;
 4519  
                         case 108:
 4520  
                                 {
 4521  0
                                 alt67=11;
 4522  
                                 }
 4523  0
                                 break;
 4524  
                         case 97:
 4525  
                                 {
 4526  0
                                 alt67=12;
 4527  
                                 }
 4528  0
                                 break;
 4529  
                         default:
 4530  0
                                 if (state.backtracking>0) {state.failed=true; return m;}
 4531  0
                                 NoViableAltException nvae =
 4532  
                                         new NoViableAltException("", 67, 0, input);
 4533  0
                                 throw nvae;
 4534  
                         }
 4535  132
                         switch (alt67) {
 4536  
                                 case 1 :
 4537  
                                         // org/argouml/language/java/reveng/Java.g:960:9: annotation
 4538  
                                         {
 4539  0
                                         pushFollow(FOLLOW_annotation_in_modifier3193);
 4540  0
                                         annotation();
 4541  0
                                         state._fsp--;
 4542  0
                                         if (state.failed) return m;
 4543  
                                         }
 4544  
                                         break;
 4545  
                                 case 2 :
 4546  
                                         // org/argouml/language/java/reveng/Java.g:961:9: 'public'
 4547  
                                         {
 4548  40
                                         match(input,93,FOLLOW_93_in_modifier3203); if (state.failed) return m;
 4549  40
                                         if ( state.backtracking==0 ) { m = ACC_PUBLIC; }
 4550  
                                         }
 4551  
                                         break;
 4552  
                                 case 3 :
 4553  
                                         // org/argouml/language/java/reveng/Java.g:962:9: 'protected'
 4554  
                                         {
 4555  24
                                         match(input,92,FOLLOW_92_in_modifier3221); if (state.failed) return m;
 4556  24
                                         if ( state.backtracking==0 ) { m = ACC_PROTECTED; }
 4557  
                                         }
 4558  
                                         break;
 4559  
                                 case 4 :
 4560  
                                         // org/argouml/language/java/reveng/Java.g:963:9: 'private'
 4561  
                                         {
 4562  16
                                         match(input,91,FOLLOW_91_in_modifier3236); if (state.failed) return m;
 4563  16
                                         if ( state.backtracking==0 ) { m = ACC_PRIVATE; }
 4564  
                                         }
 4565  
                                         break;
 4566  
                                 case 5 :
 4567  
                                         // org/argouml/language/java/reveng/Java.g:964:9: 'static'
 4568  
                                         {
 4569  33
                                         match(input,96,FOLLOW_96_in_modifier3253); if (state.failed) return m;
 4570  33
                                         if ( state.backtracking==0 ) { m = ACC_STATIC; }
 4571  
                                         }
 4572  
                                         break;
 4573  
                                 case 6 :
 4574  
                                         // org/argouml/language/java/reveng/Java.g:965:9: 'abstract'
 4575  
                                         {
 4576  7
                                         match(input,61,FOLLOW_61_in_modifier3271); if (state.failed) return m;
 4577  7
                                         if ( state.backtracking==0 ) { m = ACC_ABSTRACT; }
 4578  
                                         }
 4579  
                                         break;
 4580  
                                 case 7 :
 4581  
                                         // org/argouml/language/java/reveng/Java.g:966:9: 'final'
 4582  
                                         {
 4583  12
                                         match(input,76,FOLLOW_76_in_modifier3287); if (state.failed) return m;
 4584  12
                                         if ( state.backtracking==0 ) { m = ACC_FINAL; }
 4585  
                                         }
 4586  
                                         break;
 4587  
                                 case 8 :
 4588  
                                         // org/argouml/language/java/reveng/Java.g:967:9: 'native'
 4589  
                                         {
 4590  0
                                         match(input,87,FOLLOW_87_in_modifier3306); if (state.failed) return m;
 4591  0
                                         if ( state.backtracking==0 ) { m = ACC_NATIVE; }
 4592  
                                         }
 4593  
                                         break;
 4594  
                                 case 9 :
 4595  
                                         // org/argouml/language/java/reveng/Java.g:968:9: 'synchronized'
 4596  
                                         {
 4597  0
                                         match(input,100,FOLLOW_100_in_modifier3324); if (state.failed) return m;
 4598  0
                                         if ( state.backtracking==0 ) { m = ACC_SYNCHRONIZED; }
 4599  
                                         }
 4600  
                                         break;
 4601  
                                 case 10 :
 4602  
                                         // org/argouml/language/java/reveng/Java.g:969:9: 'transient'
 4603  
                                         {
 4604  0
                                         match(input,104,FOLLOW_104_in_modifier3336); if (state.failed) return m;
 4605  0
                                         if ( state.backtracking==0 ) { m = ACC_TRANSIENT; }
 4606  
                                         }
 4607  
                                         break;
 4608  
                                 case 11 :
 4609  
                                         // org/argouml/language/java/reveng/Java.g:970:9: 'volatile'
 4610  
                                         {
 4611  0
                                         match(input,108,FOLLOW_108_in_modifier3351); if (state.failed) return m;
 4612  0
                                         if ( state.backtracking==0 ) { m = ACC_VOLATILE; }
 4613  
                                         }
 4614  
                                         break;
 4615  
                                 case 12 :
 4616  
                                         // org/argouml/language/java/reveng/Java.g:971:9: 'strictfp'
 4617  
                                         {
 4618  0
                                         match(input,97,FOLLOW_97_in_modifier3367); if (state.failed) return m;
 4619  
                                         }
 4620  
                                         break;
 4621  
 
 4622  
                         }
 4623  
                 }
 4624  0
                 catch (RecognitionException re) {
 4625  0
                         reportError(re);
 4626  0
                         recover(input,re);
 4627  
                 }
 4628  
                 finally {
 4629  
                         // do for sure before leaving
 4630  132
                         if ( state.backtracking>0 ) { memoize(input, 50, modifier_StartIndex); }
 4631  
 
 4632  0
                 }
 4633  132
                 return m;
 4634  
         }
 4635  
         // $ANTLR end "modifier"
 4636  
 
 4637  
 
 4638  
 
 4639  
         // $ANTLR start "packageOrTypeName"
 4640  
         // org/argouml/language/java/reveng/Java.g:974:1: packageOrTypeName : qualifiedName ;
 4641  
         public final void packageOrTypeName() throws RecognitionException {
 4642  0
                 int packageOrTypeName_StartIndex = input.index();
 4643  
 
 4644  
                 try {
 4645  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 51) ) { return; }
 4646  
 
 4647  
                         // org/argouml/language/java/reveng/Java.g:975:5: ( qualifiedName )
 4648  
                         // org/argouml/language/java/reveng/Java.g:975:9: qualifiedName
 4649  
                         {
 4650  0
                         pushFollow(FOLLOW_qualifiedName_in_packageOrTypeName3386);
 4651  0
                         qualifiedName();
 4652  0
                         state._fsp--;
 4653  0
                         if (state.failed) return;
 4654  
                         }
 4655  
 
 4656  
                 }
 4657  0
                 catch (RecognitionException re) {
 4658  0
                         reportError(re);
 4659  0
                         recover(input,re);
 4660  
                 }
 4661  
                 finally {
 4662  
                         // do for sure before leaving
 4663  0
                         if ( state.backtracking>0 ) { memoize(input, 51, packageOrTypeName_StartIndex); }
 4664  
 
 4665  0
                 }
 4666  0
         }
 4667  
         // $ANTLR end "packageOrTypeName"
 4668  
 
 4669  
 
 4670  
 
 4671  
         // $ANTLR start "enumConstantName"
 4672  
         // org/argouml/language/java/reveng/Java.g:978:1: enumConstantName : Identifier ;
 4673  
         public final void enumConstantName() throws RecognitionException {
 4674  0
                 int enumConstantName_StartIndex = input.index();
 4675  
 
 4676  
                 try {
 4677  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 52) ) { return; }
 4678  
 
 4679  
                         // org/argouml/language/java/reveng/Java.g:979:5: ( Identifier )
 4680  
                         // org/argouml/language/java/reveng/Java.g:979:9: Identifier
 4681  
                         {
 4682  0
                         match(input,Identifier,FOLLOW_Identifier_in_enumConstantName3405); if (state.failed) return;
 4683  
                         }
 4684  
 
 4685  
                 }
 4686  0
                 catch (RecognitionException re) {
 4687  0
                         reportError(re);
 4688  0
                         recover(input,re);
 4689  
                 }
 4690  
                 finally {
 4691  
                         // do for sure before leaving
 4692  0
                         if ( state.backtracking>0 ) { memoize(input, 52, enumConstantName_StartIndex); }
 4693  
 
 4694  0
                 }
 4695  0
         }
 4696  
         // $ANTLR end "enumConstantName"
 4697  
 
 4698  
 
 4699  
 
 4700  
         // $ANTLR start "typeName"
 4701  
         // org/argouml/language/java/reveng/Java.g:982:1: typeName : qualifiedName ;
 4702  
         public final void typeName() throws RecognitionException {
 4703  0
                 int typeName_StartIndex = input.index();
 4704  
 
 4705  
                 try {
 4706  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 53) ) { return; }
 4707  
 
 4708  
                         // org/argouml/language/java/reveng/Java.g:983:5: ( qualifiedName )
 4709  
                         // org/argouml/language/java/reveng/Java.g:983:9: qualifiedName
 4710  
                         {
 4711  0
                         pushFollow(FOLLOW_qualifiedName_in_typeName3424);
 4712  0
                         qualifiedName();
 4713  0
                         state._fsp--;
 4714  0
                         if (state.failed) return;
 4715  
                         }
 4716  
 
 4717  
                 }
 4718  0
                 catch (RecognitionException re) {
 4719  0
                         reportError(re);
 4720  0
                         recover(input,re);
 4721  
                 }
 4722  
                 finally {
 4723  
                         // do for sure before leaving
 4724  0
                         if ( state.backtracking>0 ) { memoize(input, 53, typeName_StartIndex); }
 4725  
 
 4726  0
                 }
 4727  0
         }
 4728  
         // $ANTLR end "typeName"
 4729  
 
 4730  
 
 4731  
 
 4732  
         // $ANTLR start "type"
 4733  
         // org/argouml/language/java/reveng/Java.g:986:1: type returns [String t = null] : (coit= classOrInterfaceType ( '[' ']' )* |pt= primitiveType ( '[' ']' )* ) ;
 4734  
         public final String type() throws RecognitionException {
 4735  180
                 String t =  null;
 4736  
 
 4737  180
                 int type_StartIndex = input.index();
 4738  
 
 4739  180
                 String coit =null;
 4740  180
                 ParserRuleReturnScope pt =null;
 4741  
 
 4742  
 
 4743  180
                         StringBuffer sb = new StringBuffer();
 4744  
                     
 4745  
                 try {
 4746  204
                         if ( state.backtracking>0 && alreadyParsedRule(input, 54) ) { return t; }
 4747  
 
 4748  
                         // org/argouml/language/java/reveng/Java.g:990:5: ( (coit= classOrInterfaceType ( '[' ']' )* |pt= primitiveType ( '[' ']' )* ) )
 4749  
                         // org/argouml/language/java/reveng/Java.g:990:9: (coit= classOrInterfaceType ( '[' ']' )* |pt= primitiveType ( '[' ']' )* )
 4750  
                         {
 4751  
                         // org/argouml/language/java/reveng/Java.g:990:9: (coit= classOrInterfaceType ( '[' ']' )* |pt= primitiveType ( '[' ']' )* )
 4752  156
                         int alt70=2;
 4753  156
                         int LA70_0 = input.LA(1);
 4754  156
                         if ( (LA70_0==Identifier) ) {
 4755  125
                                 alt70=1;
 4756  
                         }
 4757  31
                         else if ( (LA70_0==62||LA70_0==64||LA70_0==67||LA70_0==72||LA70_0==78||LA70_0==84||LA70_0==86||LA70_0==95) ) {
 4758  31
                                 alt70=2;
 4759  
                         }
 4760  
 
 4761  
                         else {
 4762  0
                                 if (state.backtracking>0) {state.failed=true; return t;}
 4763  0
                                 NoViableAltException nvae =
 4764  
                                         new NoViableAltException("", 70, 0, input);
 4765  0
                                 throw nvae;
 4766  
                         }
 4767  
 
 4768  156
                         switch (alt70) {
 4769  
                                 case 1 :
 4770  
                                         // org/argouml/language/java/reveng/Java.g:991:13: coit= classOrInterfaceType ( '[' ']' )*
 4771  
                                         {
 4772  125
                                         pushFollow(FOLLOW_classOrInterfaceType_in_type3471);
 4773  125
                                         coit=classOrInterfaceType();
 4774  125
                                         state._fsp--;
 4775  125
                                         if (state.failed) return t;
 4776  125
                                         if ( state.backtracking==0 ) { sb.append(coit); }
 4777  
                                         // org/argouml/language/java/reveng/Java.g:992:13: ( '[' ']' )*
 4778  
                                         loop68:
 4779  
                                         while (true) {
 4780  125
                                                 int alt68=2;
 4781  125
                                                 int LA68_0 = input.LA(1);
 4782  125
                                                 if ( (LA68_0==57) ) {
 4783  0
                                                         alt68=1;
 4784  
                                                 }
 4785  
 
 4786  125
                                                 switch (alt68) {
 4787  
                                                 case 1 :
 4788  
                                                         // org/argouml/language/java/reveng/Java.g:992:14: '[' ']'
 4789  
                                                         {
 4790  0
                                                         match(input,57,FOLLOW_57_in_type3488); if (state.failed) return t;
 4791  0
                                                         match(input,58,FOLLOW_58_in_type3490); if (state.failed) return t;
 4792  0
                                                         if ( state.backtracking==0 ) { sb.append("[]"); }
 4793  
                                                         }
 4794  
                                                         break;
 4795  
 
 4796  
                                                 default :
 4797  125
                                                         break loop68;
 4798  
                                                 }
 4799  0
                                         }
 4800  
 
 4801  
                                         }
 4802  
                                         break;
 4803  
                                 case 2 :
 4804  
                                         // org/argouml/language/java/reveng/Java.g:994:13: pt= primitiveType ( '[' ']' )*
 4805  
                                         {
 4806  31
                                         pushFollow(FOLLOW_primitiveType_in_type3540);
 4807  31
                                         pt=primitiveType();
 4808  31
                                         state._fsp--;
 4809  31
                                         if (state.failed) return t;
 4810  31
                                         if ( state.backtracking==0 ) { sb.append((pt!=null?input.toString(pt.start,pt.stop):null)); }
 4811  
                                         // org/argouml/language/java/reveng/Java.g:995:13: ( '[' ']' )*
 4812  
                                         loop69:
 4813  
                                         while (true) {
 4814  31
                                                 int alt69=2;
 4815  31
                                                 int LA69_0 = input.LA(1);
 4816  31
                                                 if ( (LA69_0==57) ) {
 4817  0
                                                         alt69=1;
 4818  
                                                 }
 4819  
 
 4820  31
                                                 switch (alt69) {
 4821  
                                                 case 1 :
 4822  
                                                         // org/argouml/language/java/reveng/Java.g:995:14: '[' ']'
 4823  
                                                         {
 4824  0
                                                         match(input,57,FOLLOW_57_in_type3566); if (state.failed) return t;
 4825  0
                                                         match(input,58,FOLLOW_58_in_type3568); if (state.failed) return t;
 4826  0
                                                         if ( state.backtracking==0 ) { sb.append("[]"); }
 4827  
                                                         }
 4828  
                                                         break;
 4829  
 
 4830  
                                                 default :
 4831  31
                                                         break loop69;
 4832  
                                                 }
 4833  0
                                         }
 4834  
 
 4835  
                                         }
 4836  
                                         break;
 4837  
 
 4838  
                         }
 4839  
 
 4840  156
                         if ( state.backtracking==0 ) {
 4841  144
                                     t = sb.toString();
 4842  
                                 }
 4843  
                         }
 4844  
 
 4845  
                 }
 4846  0
                 catch (RecognitionException re) {
 4847  0
                         reportError(re);
 4848  0
                         recover(input,re);
 4849  
                 }
 4850  
                 finally {
 4851  
                         // do for sure before leaving
 4852  180
                         if ( state.backtracking>0 ) { memoize(input, 54, type_StartIndex); }
 4853  
 
 4854  0
                 }
 4855  156
                 return t;
 4856  
         }
 4857  
         // $ANTLR end "type"
 4858  
 
 4859  
 
 4860  
 
 4861  
         // $ANTLR start "classOrInterfaceType"
 4862  
         // org/argouml/language/java/reveng/Java.g:1003:1: classOrInterfaceType returns [String t = null] : t1= Identifier (ta= typeArguments )? ( '.' t3= Identifier (ta= typeArguments )? )* ;
 4863  
         public final String classOrInterfaceType() throws RecognitionException {
 4864  127
                 String t =  null;
 4865  
 
 4866  127
                 int classOrInterfaceType_StartIndex = input.index();
 4867  
 
 4868  127
                 Token t1=null;
 4869  127
                 Token t3=null;
 4870  127
                 ParserRuleReturnScope ta =null;
 4871  
 
 4872  
 
 4873  127
                         StringBuffer sb = new StringBuffer();
 4874  
                         // TODO: type arguments not currently returned
 4875  
                     
 4876  
                 try {
 4877  127
                         if ( state.backtracking>0 && alreadyParsedRule(input, 55) ) { return t; }
 4878  
 
 4879  
                         // org/argouml/language/java/reveng/Java.g:1008:5: (t1= Identifier (ta= typeArguments )? ( '.' t3= Identifier (ta= typeArguments )? )* )
 4880  
                         // org/argouml/language/java/reveng/Java.g:1008:9: t1= Identifier (ta= typeArguments )? ( '.' t3= Identifier (ta= typeArguments )? )*
 4881  
                         {
 4882  127
                         t1=(Token)match(input,Identifier,FOLLOW_Identifier_in_classOrInterfaceType3655); if (state.failed) return t;
 4883  
                         // org/argouml/language/java/reveng/Java.g:1008:23: (ta= typeArguments )?
 4884  127
                         int alt71=2;
 4885  127
                         int LA71_0 = input.LA(1);
 4886  127
                         if ( (LA71_0==51) ) {
 4887  0
                                 int LA71_1 = input.LA(2);
 4888  0
                                 if ( (LA71_1==Identifier||LA71_1==55||LA71_1==62||LA71_1==64||LA71_1==67||LA71_1==72||LA71_1==78||LA71_1==84||LA71_1==86||LA71_1==95) ) {
 4889  0
                                         alt71=1;
 4890  
                                 }
 4891  
                         }
 4892  127
                         switch (alt71) {
 4893  
                                 case 1 :
 4894  
                                         // org/argouml/language/java/reveng/Java.g:1008:24: ta= typeArguments
 4895  
                                         {
 4896  0
                                         pushFollow(FOLLOW_typeArguments_in_classOrInterfaceType3660);
 4897  0
                                         ta=typeArguments();
 4898  0
                                         state._fsp--;
 4899  0
                                         if (state.failed) return t;
 4900  
                                         }
 4901  
                                         break;
 4902  
 
 4903  
                         }
 4904  
 
 4905  127
                         if ( state.backtracking==0 ) { sb.append((t1!=null?t1.getText():null)); }
 4906  
                         // org/argouml/language/java/reveng/Java.g:1009:9: ( '.' t3= Identifier (ta= typeArguments )? )*
 4907  
                         loop73:
 4908  
                         while (true) {
 4909  151
                                 int alt73=2;
 4910  151
                                 int LA73_0 = input.LA(1);
 4911  151
                                 if ( (LA73_0==45) ) {
 4912  24
                                         alt73=1;
 4913  
                                 }
 4914  
 
 4915  151
                                 switch (alt73) {
 4916  
                                 case 1 :
 4917  
                                         // org/argouml/language/java/reveng/Java.g:1009:13: '.' t3= Identifier (ta= typeArguments )?
 4918  
                                         {
 4919  24
                                         match(input,45,FOLLOW_45_in_classOrInterfaceType3681); if (state.failed) return t;
 4920  24
                                         t3=(Token)match(input,Identifier,FOLLOW_Identifier_in_classOrInterfaceType3685); if (state.failed) return t;
 4921  24
                                         if ( state.backtracking==0 ) { sb.append('.').append((t3!=null?t3.getText():null)); }
 4922  
                                         // org/argouml/language/java/reveng/Java.g:1010:13: (ta= typeArguments )?
 4923  24
                                         int alt72=2;
 4924  24
                                         int LA72_0 = input.LA(1);
 4925  24
                                         if ( (LA72_0==51) ) {
 4926  0
                                                 int LA72_1 = input.LA(2);
 4927  0
                                                 if ( (LA72_1==Identifier||LA72_1==55||LA72_1==62||LA72_1==64||LA72_1==67||LA72_1==72||LA72_1==78||LA72_1==84||LA72_1==86||LA72_1==95) ) {
 4928  0
                                                         alt72=1;
 4929  
                                                 }
 4930  
                                         }
 4931  24
                                         switch (alt72) {
 4932  
                                                 case 1 :
 4933  
                                                         // org/argouml/language/java/reveng/Java.g:1010:14: ta= typeArguments
 4934  
                                                         {
 4935  0
                                                         pushFollow(FOLLOW_typeArguments_in_classOrInterfaceType3704);
 4936  0
                                                         ta=typeArguments();
 4937  0
                                                         state._fsp--;
 4938  0
                                                         if (state.failed) return t;
 4939  
                                                         }
 4940  
                                                         break;
 4941  
 
 4942  
                                         }
 4943  
 
 4944  
                                         }
 4945  24
                                         break;
 4946  
 
 4947  
                                 default :
 4948  127
                                         break loop73;
 4949  
                                 }
 4950  24
                         }
 4951  
 
 4952  127
                         if ( state.backtracking==0 ) {
 4953  115
                                     t = sb.toString()+((ta!=null?input.toString(ta.start,ta.stop):null) != null ? (ta!=null?input.toString(ta.start,ta.stop):null) : "");
 4954  
                                 }
 4955  
                         }
 4956  
 
 4957  
                 }
 4958  0
                 catch (RecognitionException re) {
 4959  0
                         reportError(re);
 4960  0
                         recover(input,re);
 4961  
                 }
 4962  
                 finally {
 4963  
                         // do for sure before leaving
 4964  127
                         if ( state.backtracking>0 ) { memoize(input, 55, classOrInterfaceType_StartIndex); }
 4965  
 
 4966  0
                 }
 4967  127
                 return t;
 4968  
         }
 4969  
         // $ANTLR end "classOrInterfaceType"
 4970  
 
 4971  
 
 4972  55
         public static class primitiveType_return extends ParserRuleReturnScope {
 4973  
         };
 4974  
 
 4975  
 
 4976  
         // $ANTLR start "primitiveType"
 4977  
         // org/argouml/language/java/reveng/Java.g:1017:1: primitiveType : ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' );
 4978  
         public final JavaParser.primitiveType_return primitiveType() throws RecognitionException {
 4979  55
                 JavaParser.primitiveType_return retval = new JavaParser.primitiveType_return();
 4980  55
                 retval.start = input.LT(1);
 4981  55
                 int primitiveType_StartIndex = input.index();
 4982  
 
 4983  
                 try {
 4984  67
                         if ( state.backtracking>0 && alreadyParsedRule(input, 56) ) { return retval; }
 4985  
 
 4986  
                         // org/argouml/language/java/reveng/Java.g:1018:5: ( 'boolean' | 'char' | 'byte' | 'short' | 'int' | 'long' | 'float' | 'double' )
 4987  
                         // org/argouml/language/java/reveng/Java.g:
 4988  
                         {
 4989  43
                         if ( input.LA(1)==62||input.LA(1)==64||input.LA(1)==67||input.LA(1)==72||input.LA(1)==78||input.LA(1)==84||input.LA(1)==86||input.LA(1)==95 ) {
 4990  43
                                 input.consume();
 4991  43
                                 state.errorRecovery=false;
 4992  43
                                 state.failed=false;
 4993  
                         }
 4994  
                         else {
 4995  0
                                 if (state.backtracking>0) {state.failed=true; return retval;}
 4996  0
                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 4997  0
                                 throw mse;
 4998  
                         }
 4999  
                         }
 5000  
 
 5001  43
                         retval.stop = input.LT(-1);
 5002  
 
 5003  
                 }
 5004  0
                 catch (RecognitionException re) {
 5005  0
                         reportError(re);
 5006  0
                         recover(input,re);
 5007  
                 }
 5008  
                 finally {
 5009  
                         // do for sure before leaving
 5010  55
                         if ( state.backtracking>0 ) { memoize(input, 56, primitiveType_StartIndex); }
 5011  
 
 5012  0
                 }
 5013  43
                 return retval;
 5014  
         }
 5015  
         // $ANTLR end "primitiveType"
 5016  
 
 5017  
 
 5018  
 
 5019  
         // $ANTLR start "variableModifier"
 5020  
         // org/argouml/language/java/reveng/Java.g:1028:1: variableModifier returns [short m = 0] : ( 'final' | annotation );
 5021  
         public final short variableModifier() throws RecognitionException {
 5022  4
                 short m =  0;
 5023  
 
 5024  4
                 int variableModifier_StartIndex = input.index();
 5025  
 
 5026  
                 try {
 5027  4
                         if ( state.backtracking>0 && alreadyParsedRule(input, 57) ) { return m; }
 5028  
 
 5029  
                         // org/argouml/language/java/reveng/Java.g:1029:5: ( 'final' | annotation )
 5030  4
                         int alt74=2;
 5031  4
                         int LA74_0 = input.LA(1);
 5032  4
                         if ( (LA74_0==76) ) {
 5033  4
                                 alt74=1;
 5034  
                         }
 5035  0
                         else if ( (LA74_0==56) ) {
 5036  0
                                 alt74=2;
 5037  
                         }
 5038  
 
 5039  
                         else {
 5040  0
                                 if (state.backtracking>0) {state.failed=true; return m;}
 5041  0
                                 NoViableAltException nvae =
 5042  
                                         new NoViableAltException("", 74, 0, input);
 5043  0
                                 throw nvae;
 5044  
                         }
 5045  
 
 5046  4
                         switch (alt74) {
 5047  
                                 case 1 :
 5048  
                                         // org/argouml/language/java/reveng/Java.g:1029:9: 'final'
 5049  
                                         {
 5050  4
                                         match(input,76,FOLLOW_76_in_variableModifier3839); if (state.failed) return m;
 5051  4
                                         if ( state.backtracking==0 ) { m = ACC_FINAL; }
 5052  
                                         }
 5053  
                                         break;
 5054  
                                 case 2 :
 5055  
                                         // org/argouml/language/java/reveng/Java.g:1030:9: annotation
 5056  
                                         {
 5057  0
                                         pushFollow(FOLLOW_annotation_in_variableModifier3851);
 5058  0
                                         annotation();
 5059  0
                                         state._fsp--;
 5060  0
                                         if (state.failed) return m;
 5061  
                                         }
 5062  
                                         break;
 5063  
 
 5064  
                         }
 5065  
                 }
 5066  0
                 catch (RecognitionException re) {
 5067  0
                         reportError(re);
 5068  0
                         recover(input,re);
 5069  
                 }
 5070  
                 finally {
 5071  
                         // do for sure before leaving
 5072  4
                         if ( state.backtracking>0 ) { memoize(input, 57, variableModifier_StartIndex); }
 5073  
 
 5074  0
                 }
 5075  4
                 return m;
 5076  
         }
 5077  
         // $ANTLR end "variableModifier"
 5078  
 
 5079  
 
 5080  0
         public static class typeArguments_return extends ParserRuleReturnScope {
 5081  
         };
 5082  
 
 5083  
 
 5084  
         // $ANTLR start "typeArguments"
 5085  
         // org/argouml/language/java/reveng/Java.g:1033:1: typeArguments : '<' typeArgument ( ',' typeArgument )* '>' ;
 5086  
         public final JavaParser.typeArguments_return typeArguments() throws RecognitionException {
 5087  0
                 JavaParser.typeArguments_return retval = new JavaParser.typeArguments_return();
 5088  0
                 retval.start = input.LT(1);
 5089  0
                 int typeArguments_StartIndex = input.index();
 5090  
 
 5091  
                 try {
 5092  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 58) ) { return retval; }
 5093  
 
 5094  
                         // org/argouml/language/java/reveng/Java.g:1034:5: ( '<' typeArgument ( ',' typeArgument )* '>' )
 5095  
                         // org/argouml/language/java/reveng/Java.g:1034:9: '<' typeArgument ( ',' typeArgument )* '>'
 5096  
                         {
 5097  0
                         match(input,51,FOLLOW_51_in_typeArguments3870); if (state.failed) return retval;
 5098  0
                         pushFollow(FOLLOW_typeArgument_in_typeArguments3872);
 5099  0
                         typeArgument();
 5100  0
                         state._fsp--;
 5101  0
                         if (state.failed) return retval;
 5102  
                         // org/argouml/language/java/reveng/Java.g:1034:26: ( ',' typeArgument )*
 5103  
                         loop75:
 5104  
                         while (true) {
 5105  0
                                 int alt75=2;
 5106  0
                                 int LA75_0 = input.LA(1);
 5107  0
                                 if ( (LA75_0==41) ) {
 5108  0
                                         alt75=1;
 5109  
                                 }
 5110  
 
 5111  0
                                 switch (alt75) {
 5112  
                                 case 1 :
 5113  
                                         // org/argouml/language/java/reveng/Java.g:1034:27: ',' typeArgument
 5114  
                                         {
 5115  0
                                         match(input,41,FOLLOW_41_in_typeArguments3875); if (state.failed) return retval;
 5116  0
                                         pushFollow(FOLLOW_typeArgument_in_typeArguments3877);
 5117  0
                                         typeArgument();
 5118  0
                                         state._fsp--;
 5119  0
                                         if (state.failed) return retval;
 5120  
                                         }
 5121  
                                         break;
 5122  
 
 5123  
                                 default :
 5124  0
                                         break loop75;
 5125  
                                 }
 5126  0
                         }
 5127  
 
 5128  0
                         match(input,54,FOLLOW_54_in_typeArguments3881); if (state.failed) return retval;
 5129  
                         }
 5130  
 
 5131  0
                         retval.stop = input.LT(-1);
 5132  
 
 5133  
                 }
 5134  0
                 catch (RecognitionException re) {
 5135  0
                         reportError(re);
 5136  0
                         recover(input,re);
 5137  
                 }
 5138  
                 finally {
 5139  
                         // do for sure before leaving
 5140  0
                         if ( state.backtracking>0 ) { memoize(input, 58, typeArguments_StartIndex); }
 5141  
 
 5142  0
                 }
 5143  0
                 return retval;
 5144  
         }
 5145  
         // $ANTLR end "typeArguments"
 5146  
 
 5147  
 
 5148  
 
 5149  
         // $ANTLR start "typeArgument"
 5150  
         // org/argouml/language/java/reveng/Java.g:1037:1: typeArgument : ( type | '?' ( ( 'extends' | 'super' ) type )? );
 5151  
         public final void typeArgument() throws RecognitionException {
 5152  0
                 int typeArgument_StartIndex = input.index();
 5153  
 
 5154  
                 try {
 5155  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 59) ) { return; }
 5156  
 
 5157  
                         // org/argouml/language/java/reveng/Java.g:1038:5: ( type | '?' ( ( 'extends' | 'super' ) type )? )
 5158  0
                         int alt77=2;
 5159  0
                         int LA77_0 = input.LA(1);
 5160  0
                         if ( (LA77_0==Identifier||LA77_0==62||LA77_0==64||LA77_0==67||LA77_0==72||LA77_0==78||LA77_0==84||LA77_0==86||LA77_0==95) ) {
 5161  0
                                 alt77=1;
 5162  
                         }
 5163  0
                         else if ( (LA77_0==55) ) {
 5164  0
                                 alt77=2;
 5165  
                         }
 5166  
 
 5167  
                         else {
 5168  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 5169  0
                                 NoViableAltException nvae =
 5170  
                                         new NoViableAltException("", 77, 0, input);
 5171  0
                                 throw nvae;
 5172  
                         }
 5173  
 
 5174  0
                         switch (alt77) {
 5175  
                                 case 1 :
 5176  
                                         // org/argouml/language/java/reveng/Java.g:1038:9: type
 5177  
                                         {
 5178  0
                                         pushFollow(FOLLOW_type_in_typeArgument3904);
 5179  0
                                         type();
 5180  0
                                         state._fsp--;
 5181  0
                                         if (state.failed) return;
 5182  
                                         }
 5183  
                                         break;
 5184  
                                 case 2 :
 5185  
                                         // org/argouml/language/java/reveng/Java.g:1039:9: '?' ( ( 'extends' | 'super' ) type )?
 5186  
                                         {
 5187  0
                                         match(input,55,FOLLOW_55_in_typeArgument3914); if (state.failed) return;
 5188  
                                         // org/argouml/language/java/reveng/Java.g:1039:13: ( ( 'extends' | 'super' ) type )?
 5189  0
                                         int alt76=2;
 5190  0
                                         int LA76_0 = input.LA(1);
 5191  0
                                         if ( (LA76_0==74||LA76_0==98) ) {
 5192  0
                                                 alt76=1;
 5193  
                                         }
 5194  0
                                         switch (alt76) {
 5195  
                                                 case 1 :
 5196  
                                                         // org/argouml/language/java/reveng/Java.g:1039:14: ( 'extends' | 'super' ) type
 5197  
                                                         {
 5198  0
                                                         if ( input.LA(1)==74||input.LA(1)==98 ) {
 5199  0
                                                                 input.consume();
 5200  0
                                                                 state.errorRecovery=false;
 5201  0
                                                                 state.failed=false;
 5202  
                                                         }
 5203  
                                                         else {
 5204  0
                                                                 if (state.backtracking>0) {state.failed=true; return;}
 5205  0
                                                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 5206  0
                                                                 throw mse;
 5207  
                                                         }
 5208  0
                                                         pushFollow(FOLLOW_type_in_typeArgument3925);
 5209  0
                                                         type();
 5210  0
                                                         state._fsp--;
 5211  0
                                                         if (state.failed) return;
 5212  
                                                         }
 5213  
                                                         break;
 5214  
 
 5215  
                                         }
 5216  
 
 5217  
                                         }
 5218  
                                         break;
 5219  
 
 5220  
                         }
 5221  
                 }
 5222  0
                 catch (RecognitionException re) {
 5223  0
                         reportError(re);
 5224  0
                         recover(input,re);
 5225  
                 }
 5226  
                 finally {
 5227  
                         // do for sure before leaving
 5228  0
                         if ( state.backtracking>0 ) { memoize(input, 59, typeArgument_StartIndex); }
 5229  
 
 5230  0
                 }
 5231  0
         }
 5232  
         // $ANTLR end "typeArgument"
 5233  
 
 5234  
 
 5235  
 
 5236  
         // $ANTLR start "qualifiedNameList"
 5237  
         // org/argouml/language/java/reveng/Java.g:1042:1: qualifiedNameList : qualifiedName ( ',' qualifiedName )* ;
 5238  
         public final void qualifiedNameList() throws RecognitionException {
 5239  2
                 int qualifiedNameList_StartIndex = input.index();
 5240  
 
 5241  
                 try {
 5242  2
                         if ( state.backtracking>0 && alreadyParsedRule(input, 60) ) { return; }
 5243  
 
 5244  
                         // org/argouml/language/java/reveng/Java.g:1043:5: ( qualifiedName ( ',' qualifiedName )* )
 5245  
                         // org/argouml/language/java/reveng/Java.g:1043:9: qualifiedName ( ',' qualifiedName )*
 5246  
                         {
 5247  2
                         pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList3950);
 5248  2
                         qualifiedName();
 5249  2
                         state._fsp--;
 5250  2
                         if (state.failed) return;
 5251  
                         // org/argouml/language/java/reveng/Java.g:1043:23: ( ',' qualifiedName )*
 5252  
                         loop78:
 5253  
                         while (true) {
 5254  2
                                 int alt78=2;
 5255  2
                                 int LA78_0 = input.LA(1);
 5256  2
                                 if ( (LA78_0==41) ) {
 5257  0
                                         alt78=1;
 5258  
                                 }
 5259  
 
 5260  2
                                 switch (alt78) {
 5261  
                                 case 1 :
 5262  
                                         // org/argouml/language/java/reveng/Java.g:1043:24: ',' qualifiedName
 5263  
                                         {
 5264  0
                                         match(input,41,FOLLOW_41_in_qualifiedNameList3953); if (state.failed) return;
 5265  0
                                         pushFollow(FOLLOW_qualifiedName_in_qualifiedNameList3955);
 5266  0
                                         qualifiedName();
 5267  0
                                         state._fsp--;
 5268  0
                                         if (state.failed) return;
 5269  
                                         }
 5270  
                                         break;
 5271  
 
 5272  
                                 default :
 5273  2
                                         break loop78;
 5274  
                                 }
 5275  0
                         }
 5276  
 
 5277  
                         }
 5278  
 
 5279  
                 }
 5280  0
                 catch (RecognitionException re) {
 5281  0
                         reportError(re);
 5282  0
                         recover(input,re);
 5283  
                 }
 5284  
                 finally {
 5285  
                         // do for sure before leaving
 5286  2
                         if ( state.backtracking>0 ) { memoize(input, 60, qualifiedNameList_StartIndex); }
 5287  
 
 5288  0
                 }
 5289  2
         }
 5290  
         // $ANTLR end "qualifiedNameList"
 5291  
 
 5292  
 
 5293  
 
 5294  
         // $ANTLR start "formalParameters"
 5295  
         // org/argouml/language/java/reveng/Java.g:1046:1: formalParameters returns [List<ParameterDeclaration> paramList=new ArrayList<ParameterDeclaration>()] : '(' ( formalParameterDecls[paramList] )? ')' ;
 5296  
         public final List<ParameterDeclaration> formalParameters() throws RecognitionException {
 5297  52
                 List<ParameterDeclaration> paramList = new ArrayList<ParameterDeclaration>();
 5298  
 
 5299  52
                 int formalParameters_StartIndex = input.index();
 5300  
 
 5301  
                 try {
 5302  52
                         if ( state.backtracking>0 && alreadyParsedRule(input, 61) ) { return paramList; }
 5303  
 
 5304  
                         // org/argouml/language/java/reveng/Java.g:1047:5: ( '(' ( formalParameterDecls[paramList] )? ')' )
 5305  
                         // org/argouml/language/java/reveng/Java.g:1047:9: '(' ( formalParameterDecls[paramList] )? ')'
 5306  
                         {
 5307  52
                         match(input,34,FOLLOW_34_in_formalParameters3980); if (state.failed) return paramList;
 5308  
                         // org/argouml/language/java/reveng/Java.g:1047:13: ( formalParameterDecls[paramList] )?
 5309  52
                         int alt79=2;
 5310  52
                         int LA79_0 = input.LA(1);
 5311  52
                         if ( (LA79_0==Identifier||LA79_0==56||LA79_0==62||LA79_0==64||LA79_0==67||LA79_0==72||LA79_0==76||LA79_0==78||LA79_0==84||LA79_0==86||LA79_0==95) ) {
 5312  32
                                 alt79=1;
 5313  
                         }
 5314  52
                         switch (alt79) {
 5315  
                                 case 1 :
 5316  
                                         // org/argouml/language/java/reveng/Java.g:1047:14: formalParameterDecls[paramList]
 5317  
                                         {
 5318  32
                                         pushFollow(FOLLOW_formalParameterDecls_in_formalParameters3983);
 5319  32
                                         formalParameterDecls(paramList);
 5320  32
                                         state._fsp--;
 5321  32
                                         if (state.failed) return paramList;
 5322  
                                         }
 5323  
                                         break;
 5324  
 
 5325  
                         }
 5326  
 
 5327  52
                         match(input,35,FOLLOW_35_in_formalParameters3988); if (state.failed) return paramList;
 5328  
                         }
 5329  
 
 5330  
                 }
 5331  0
                 catch (RecognitionException re) {
 5332  0
                         reportError(re);
 5333  0
                         recover(input,re);
 5334  
                 }
 5335  
                 finally {
 5336  
                         // do for sure before leaving
 5337  52
                         if ( state.backtracking>0 ) { memoize(input, 61, formalParameters_StartIndex); }
 5338  
 
 5339  0
                 }
 5340  52
                 return paramList;
 5341  
         }
 5342  
         // $ANTLR end "formalParameters"
 5343  
 
 5344  
 
 5345  
 
 5346  
         // $ANTLR start "formalParameterDecls"
 5347  
         // org/argouml/language/java/reveng/Java.g:1050:1: formalParameterDecls[List<ParameterDeclaration> paramList] : mods= variableModifiers t= type formalParameterDeclsRest[mods, t, paramList] ;
 5348  
         public final void formalParameterDecls(List<ParameterDeclaration> paramList) throws RecognitionException {
 5349  44
                 int formalParameterDecls_StartIndex = input.index();
 5350  
 
 5351  44
                 short mods =0;
 5352  44
                 String t =null;
 5353  
 
 5354  
                 try {
 5355  44
                         if ( state.backtracking>0 && alreadyParsedRule(input, 62) ) { return; }
 5356  
 
 5357  
                         // org/argouml/language/java/reveng/Java.g:1051:5: (mods= variableModifiers t= type formalParameterDeclsRest[mods, t, paramList] )
 5358  
                         // org/argouml/language/java/reveng/Java.g:1051:9: mods= variableModifiers t= type formalParameterDeclsRest[mods, t, paramList]
 5359  
                         {
 5360  44
                         pushFollow(FOLLOW_variableModifiers_in_formalParameterDecls4014);
 5361  44
                         mods=variableModifiers();
 5362  44
                         state._fsp--;
 5363  44
                         if (state.failed) return;
 5364  44
                         pushFollow(FOLLOW_type_in_formalParameterDecls4018);
 5365  44
                         t=type();
 5366  44
                         state._fsp--;
 5367  44
                         if (state.failed) return;
 5368  44
                         pushFollow(FOLLOW_formalParameterDeclsRest_in_formalParameterDecls4020);
 5369  44
                         formalParameterDeclsRest(mods, t, paramList);
 5370  44
                         state._fsp--;
 5371  44
                         if (state.failed) return;
 5372  
                         }
 5373  
 
 5374  
                 }
 5375  0
                 catch (RecognitionException re) {
 5376  0
                         reportError(re);
 5377  0
                         recover(input,re);
 5378  
                 }
 5379  
                 finally {
 5380  
                         // do for sure before leaving
 5381  44
                         if ( state.backtracking>0 ) { memoize(input, 62, formalParameterDecls_StartIndex); }
 5382  
 
 5383  0
                 }
 5384  44
         }
 5385  
         // $ANTLR end "formalParameterDecls"
 5386  
 
 5387  
 
 5388  
 
 5389  
         // $ANTLR start "formalParameterDeclsRest"
 5390  
         // org/argouml/language/java/reveng/Java.g:1054:1: formalParameterDeclsRest[short mods, String t, List<ParameterDeclaration> paramList] : (vdi= variableDeclaratorId ( ',' formalParameterDecls[paramList] )? | '...' vdi= variableDeclaratorId );
 5391  
         public final void formalParameterDeclsRest(short mods, String t, List<ParameterDeclaration> paramList) throws RecognitionException {
 5392  44
                 int formalParameterDeclsRest_StartIndex = input.index();
 5393  
 
 5394  44
                 ParserRuleReturnScope vdi =null;
 5395  
 
 5396  
 
 5397  44
                     String pdb = "";
 5398  44
                     String id = null;
 5399  
                     int ix;
 5400  
 
 5401  
                 try {
 5402  44
                         if ( state.backtracking>0 && alreadyParsedRule(input, 63) ) { return; }
 5403  
 
 5404  
                         // org/argouml/language/java/reveng/Java.g:1060:5: (vdi= variableDeclaratorId ( ',' formalParameterDecls[paramList] )? | '...' vdi= variableDeclaratorId )
 5405  44
                         int alt81=2;
 5406  44
                         int LA81_0 = input.LA(1);
 5407  44
                         if ( (LA81_0==Identifier) ) {
 5408  44
                                 alt81=1;
 5409  
                         }
 5410  0
                         else if ( (LA81_0==46) ) {
 5411  0
                                 alt81=2;
 5412  
                         }
 5413  
 
 5414  
                         else {
 5415  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 5416  0
                                 NoViableAltException nvae =
 5417  
                                         new NoViableAltException("", 81, 0, input);
 5418  0
                                 throw nvae;
 5419  
                         }
 5420  
 
 5421  44
                         switch (alt81) {
 5422  
                                 case 1 :
 5423  
                                         // org/argouml/language/java/reveng/Java.g:1060:9: vdi= variableDeclaratorId ( ',' formalParameterDecls[paramList] )?
 5424  
                                         {
 5425  44
                                         pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest4051);
 5426  44
                                         vdi=variableDeclaratorId();
 5427  44
                                         state._fsp--;
 5428  44
                                         if (state.failed) return;
 5429  44
                                         if ( state.backtracking==0 ) {
 5430  44
                                                     id = (vdi!=null?input.toString(vdi.start,vdi.stop):null);
 5431  44
                                                     ix = id.indexOf('[');
 5432  44
                                                     if (ix > 0) {
 5433  0
                                                         pdb = id.substring(ix);
 5434  0
                                                         id = id.substring(0, ix - 1);
 5435  
                                                     }
 5436  44
                                                     paramList.add(new ParameterDeclaration(mods, t + pdb, id));
 5437  
                                                 }
 5438  
                                         // org/argouml/language/java/reveng/Java.g:1070:9: ( ',' formalParameterDecls[paramList] )?
 5439  44
                                         int alt80=2;
 5440  44
                                         int LA80_0 = input.LA(1);
 5441  44
                                         if ( (LA80_0==41) ) {
 5442  12
                                                 alt80=1;
 5443  
                                         }
 5444  44
                                         switch (alt80) {
 5445  
                                                 case 1 :
 5446  
                                                         // org/argouml/language/java/reveng/Java.g:1070:10: ',' formalParameterDecls[paramList]
 5447  
                                                         {
 5448  12
                                                         match(input,41,FOLLOW_41_in_formalParameterDeclsRest4072); if (state.failed) return;
 5449  12
                                                         pushFollow(FOLLOW_formalParameterDecls_in_formalParameterDeclsRest4074);
 5450  12
                                                         formalParameterDecls(paramList);
 5451  12
                                                         state._fsp--;
 5452  12
                                                         if (state.failed) return;
 5453  
                                                         }
 5454  
                                                         break;
 5455  
 
 5456  
                                         }
 5457  
 
 5458  
                                         }
 5459  44
                                         break;
 5460  
                                 case 2 :
 5461  
                                         // org/argouml/language/java/reveng/Java.g:1071:9: '...' vdi= variableDeclaratorId
 5462  
                                         {
 5463  0
                                         match(input,46,FOLLOW_46_in_formalParameterDeclsRest4087); if (state.failed) return;
 5464  0
                                         pushFollow(FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest4091);
 5465  0
                                         vdi=variableDeclaratorId();
 5466  0
                                         state._fsp--;
 5467  0
                                         if (state.failed) return;
 5468  0
                                         if ( state.backtracking==0 ) {
 5469  0
                                                     id = (vdi!=null?input.toString(vdi.start,vdi.stop):null);
 5470  0
                                                     ix = id.indexOf('[');
 5471  0
                                                     if (ix > 0) {
 5472  0
                                                         pdb = id.substring(ix);
 5473  0
                                                         id = id.substring(0, ix - 1);
 5474  
                                                     }
 5475  0
                                                     paramList.add(new ParameterDeclaration(mods, t + "..." + pdb, id));
 5476  
                                                 }
 5477  
                                         }
 5478  
                                         break;
 5479  
 
 5480  
                         }
 5481  
                 }
 5482  0
                 catch (RecognitionException re) {
 5483  0
                         reportError(re);
 5484  0
                         recover(input,re);
 5485  
                 }
 5486  
                 finally {
 5487  
                         // do for sure before leaving
 5488  44
                         if ( state.backtracking>0 ) { memoize(input, 63, formalParameterDeclsRest_StartIndex); }
 5489  
 
 5490  0
                 }
 5491  44
         }
 5492  
         // $ANTLR end "formalParameterDeclsRest"
 5493  
 
 5494  
 
 5495  
 
 5496  
         // $ANTLR start "methodBody"
 5497  
         // org/argouml/language/java/reveng/Java.g:1083:1: methodBody : block ;
 5498  
         public final void methodBody() throws RecognitionException {
 5499  23
                 int methodBody_StartIndex = input.index();
 5500  
 
 5501  
                 try {
 5502  23
                         if ( state.backtracking>0 && alreadyParsedRule(input, 64) ) { return; }
 5503  
 
 5504  
                         // org/argouml/language/java/reveng/Java.g:1084:5: ( block )
 5505  
                         // org/argouml/language/java/reveng/Java.g:1084:9: block
 5506  
                         {
 5507  23
                         pushFollow(FOLLOW_block_in_methodBody4124);
 5508  23
                         block();
 5509  23
                         state._fsp--;
 5510  23
                         if (state.failed) return;
 5511  
                         }
 5512  
 
 5513  
                 }
 5514  0
                 catch (RecognitionException re) {
 5515  0
                         reportError(re);
 5516  0
                         recover(input,re);
 5517  
                 }
 5518  
                 finally {
 5519  
                         // do for sure before leaving
 5520  23
                         if ( state.backtracking>0 ) { memoize(input, 64, methodBody_StartIndex); }
 5521  
 
 5522  0
                 }
 5523  23
         }
 5524  
         // $ANTLR end "methodBody"
 5525  
 
 5526  
 
 5527  14
         public static class constructorBody_return extends ParserRuleReturnScope {
 5528  
         };
 5529  
 
 5530  
 
 5531  
         // $ANTLR start "constructorBody"
 5532  
         // org/argouml/language/java/reveng/Java.g:1087:1: constructorBody : '{' ( explicitConstructorInvocation )? ( blockStatement )* '}' ;
 5533  
         public final JavaParser.constructorBody_return constructorBody() throws RecognitionException {
 5534  14
                 JavaParser.constructorBody_return retval = new JavaParser.constructorBody_return();
 5535  14
                 retval.start = input.LT(1);
 5536  14
                 int constructorBody_StartIndex = input.index();
 5537  
 
 5538  
 
 5539  14
                         boolean isOutestCompStat = !isInCompoundStatement();
 5540  
                     
 5541  
                 try {
 5542  14
                         if ( state.backtracking>0 && alreadyParsedRule(input, 65) ) { return retval; }
 5543  
 
 5544  
                         // org/argouml/language/java/reveng/Java.g:1091:5: ( '{' ( explicitConstructorInvocation )? ( blockStatement )* '}' )
 5545  
                         // org/argouml/language/java/reveng/Java.g:1091:9: '{' ( explicitConstructorInvocation )? ( blockStatement )* '}'
 5546  
                         {
 5547  14
                         if ( state.backtracking==0 ) {
 5548  14
                                     if (isOutestCompStat) {
 5549  14
                                         setIsInCompoundStatement(true);
 5550  
                                     }
 5551  
                                 }
 5552  14
                         match(input,110,FOLLOW_110_in_constructorBody4161); if (state.failed) return retval;
 5553  
                         // org/argouml/language/java/reveng/Java.g:1096:13: ( explicitConstructorInvocation )?
 5554  14
                         int alt82=2;
 5555  14
                         alt82 = dfa82.predict(input);
 5556  14
                         switch (alt82) {
 5557  
                                 case 1 :
 5558  
                                         // org/argouml/language/java/reveng/Java.g:1096:13: explicitConstructorInvocation
 5559  
                                         {
 5560  0
                                         pushFollow(FOLLOW_explicitConstructorInvocation_in_constructorBody4163);
 5561  0
                                         explicitConstructorInvocation();
 5562  0
                                         state._fsp--;
 5563  0
                                         if (state.failed) return retval;
 5564  
                                         }
 5565  
                                         break;
 5566  
 
 5567  
                         }
 5568  
 
 5569  
                         // org/argouml/language/java/reveng/Java.g:1096:44: ( blockStatement )*
 5570  
                         loop83:
 5571  
                         while (true) {
 5572  23
                                 int alt83=2;
 5573  23
                                 int LA83_0 = input.LA(1);
 5574  23
                                 if ( (LA83_0==ASSERT||(LA83_0 >= CharacterLiteral && LA83_0 <= DecimalLiteral)||LA83_0==ENUM||LA83_0==FloatingPointLiteral||(LA83_0 >= HexLiteral && LA83_0 <= Identifier)||(LA83_0 >= OctalLiteral && LA83_0 <= StringLiteral)||LA83_0==27||LA83_0==34||(LA83_0 >= 38 && LA83_0 <= 39)||(LA83_0 >= 42 && LA83_0 <= 43)||LA83_0==50||LA83_0==56||(LA83_0 >= 61 && LA83_0 <= 64)||(LA83_0 >= 67 && LA83_0 <= 69)||(LA83_0 >= 71 && LA83_0 <= 72)||(LA83_0 >= 75 && LA83_0 <= 76)||(LA83_0 >= 78 && LA83_0 <= 80)||(LA83_0 >= 84 && LA83_0 <= 86)||(LA83_0 >= 88 && LA83_0 <= 89)||(LA83_0 >= 91 && LA83_0 <= 102)||(LA83_0 >= 105 && LA83_0 <= 107)||(LA83_0 >= 109 && LA83_0 <= 110)||LA83_0==115) ) {
 5575  9
                                         alt83=1;
 5576  
                                 }
 5577  
 
 5578  23
                                 switch (alt83) {
 5579  
                                 case 1 :
 5580  
                                         // org/argouml/language/java/reveng/Java.g:1096:44: blockStatement
 5581  
                                         {
 5582  9
                                         pushFollow(FOLLOW_blockStatement_in_constructorBody4166);
 5583  9
                                         blockStatement();
 5584  9
                                         state._fsp--;
 5585  9
                                         if (state.failed) return retval;
 5586  
                                         }
 5587  
                                         break;
 5588  
 
 5589  
                                 default :
 5590  14
                                         break loop83;
 5591  
                                 }
 5592  9
                         }
 5593  
 
 5594  14
                         match(input,114,FOLLOW_114_in_constructorBody4169); if (state.failed) return retval;
 5595  14
                         if ( state.backtracking==0 ) {
 5596  14
                                     if (isOutestCompStat) {
 5597  14
                                         String b = input.toString(retval.start,input.LT(-1));
 5598  
                                         // the body is everything between { and }, but for
 5599  
                                         // compatibility reasons the last ws's get stripped off
 5600  
                                         // and a newline is added
 5601  14
                                         b = b.substring(0, b.length() - 1).trim();
 5602  14
                                         setBody(b.substring(1) + '\n');
 5603  14
                                         setIsInCompoundStatement(false);
 5604  
                                     }
 5605  
                                 }
 5606  
                         }
 5607  
 
 5608  14
                         retval.stop = input.LT(-1);
 5609  
 
 5610  
                 }
 5611  0
                 catch (RecognitionException re) {
 5612  0
                         reportError(re);
 5613  0
                         recover(input,re);
 5614  
                 }
 5615  
                 finally {
 5616  
                         // do for sure before leaving
 5617  14
                         if ( state.backtracking>0 ) { memoize(input, 65, constructorBody_StartIndex); }
 5618  
 
 5619  0
                 }
 5620  14
                 return retval;
 5621  
         }
 5622  
         // $ANTLR end "constructorBody"
 5623  
 
 5624  
 
 5625  
 
 5626  
         // $ANTLR start "explicitConstructorInvocation"
 5627  
         // org/argouml/language/java/reveng/Java.g:1110:1: explicitConstructorInvocation : ( ( nonWildcardTypeArguments )? ( 'this' | 'super' ) arguments ';' | primary '.' ( nonWildcardTypeArguments )? 'super' arguments ';' );
 5628  
         public final void explicitConstructorInvocation() throws RecognitionException {
 5629  9
                 int explicitConstructorInvocation_StartIndex = input.index();
 5630  
 
 5631  
                 try {
 5632  9
                         if ( state.backtracking>0 && alreadyParsedRule(input, 66) ) { return; }
 5633  
 
 5634  
                         // org/argouml/language/java/reveng/Java.g:1111:5: ( ( nonWildcardTypeArguments )? ( 'this' | 'super' ) arguments ';' | primary '.' ( nonWildcardTypeArguments )? 'super' arguments ';' )
 5635  9
                         int alt86=2;
 5636  9
                         switch ( input.LA(1) ) {
 5637  
                         case 51:
 5638  
                                 {
 5639  0
                                 alt86=1;
 5640  
                                 }
 5641  0
                                 break;
 5642  
                         case 101:
 5643  
                                 {
 5644  9
                                 int LA86_2 = input.LA(2);
 5645  9
                                 if ( (LA86_2==34) ) {
 5646  0
                                         int LA86_15 = input.LA(3);
 5647  0
                                         if ( (synpred118_Java()) ) {
 5648  0
                                                 alt86=1;
 5649  
                                         }
 5650  
                                         else if ( (true) ) {
 5651  0
                                                 alt86=2;
 5652  
                                         }
 5653  
 
 5654  0
                                 }
 5655  9
                                 else if ( (LA86_2==45||LA86_2==57) ) {
 5656  9
                                         alt86=2;
 5657  
                                 }
 5658  
 
 5659  
                                 else {
 5660  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 5661  0
                                         int nvaeMark = input.mark();
 5662  
                                         try {
 5663  0
                                                 input.consume();
 5664  0
                                                 NoViableAltException nvae =
 5665  
                                                         new NoViableAltException("", 86, 2, input);
 5666  0
                                                 throw nvae;
 5667  
                                         } finally {
 5668  0
                                                 input.rewind(nvaeMark);
 5669  0
                                         }
 5670  
                                 }
 5671  
 
 5672  
                                 }
 5673  9
                                 break;
 5674  
                         case CharacterLiteral:
 5675  
                         case DecimalLiteral:
 5676  
                         case FloatingPointLiteral:
 5677  
                         case HexLiteral:
 5678  
                         case Identifier:
 5679  
                         case OctalLiteral:
 5680  
                         case StringLiteral:
 5681  
                         case 34:
 5682  
                         case 62:
 5683  
                         case 64:
 5684  
                         case 67:
 5685  
                         case 72:
 5686  
                         case 75:
 5687  
                         case 78:
 5688  
                         case 84:
 5689  
                         case 86:
 5690  
                         case 88:
 5691  
                         case 89:
 5692  
                         case 95:
 5693  
                         case 105:
 5694  
                         case 107:
 5695  
                                 {
 5696  0
                                 alt86=2;
 5697  
                                 }
 5698  0
                                 break;
 5699  
                         case 98:
 5700  
                                 {
 5701  0
                                 int LA86_4 = input.LA(2);
 5702  0
                                 if ( (LA86_4==34) ) {
 5703  0
                                         int LA86_18 = input.LA(3);
 5704  0
                                         if ( (synpred118_Java()) ) {
 5705  0
                                                 alt86=1;
 5706  
                                         }
 5707  
                                         else if ( (true) ) {
 5708  0
                                                 alt86=2;
 5709  
                                         }
 5710  
 
 5711  0
                                 }
 5712  0
                                 else if ( (LA86_4==45) ) {
 5713  0
                                         alt86=2;
 5714  
                                 }
 5715  
 
 5716  
                                 else {
 5717  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 5718  0
                                         int nvaeMark = input.mark();
 5719  
                                         try {
 5720  0
                                                 input.consume();
 5721  0
                                                 NoViableAltException nvae =
 5722  
                                                         new NoViableAltException("", 86, 4, input);
 5723  0
                                                 throw nvae;
 5724  
                                         } finally {
 5725  0
                                                 input.rewind(nvaeMark);
 5726  0
                                         }
 5727  
                                 }
 5728  
 
 5729  
                                 }
 5730  0
                                 break;
 5731  
                         default:
 5732  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 5733  0
                                 NoViableAltException nvae =
 5734  
                                         new NoViableAltException("", 86, 0, input);
 5735  0
                                 throw nvae;
 5736  
                         }
 5737  9
                         switch (alt86) {
 5738  
                                 case 1 :
 5739  
                                         // org/argouml/language/java/reveng/Java.g:1111:9: ( nonWildcardTypeArguments )? ( 'this' | 'super' ) arguments ';'
 5740  
                                         {
 5741  
                                         // org/argouml/language/java/reveng/Java.g:1111:9: ( nonWildcardTypeArguments )?
 5742  0
                                         int alt84=2;
 5743  0
                                         int LA84_0 = input.LA(1);
 5744  0
                                         if ( (LA84_0==51) ) {
 5745  0
                                                 alt84=1;
 5746  
                                         }
 5747  0
                                         switch (alt84) {
 5748  
                                                 case 1 :
 5749  
                                                         // org/argouml/language/java/reveng/Java.g:1111:10: nonWildcardTypeArguments
 5750  
                                                         {
 5751  0
                                                         pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitConstructorInvocation4199);
 5752  0
                                                         nonWildcardTypeArguments();
 5753  0
                                                         state._fsp--;
 5754  0
                                                         if (state.failed) return;
 5755  
                                                         }
 5756  
                                                         break;
 5757  
 
 5758  
                                         }
 5759  
 
 5760  0
                                         if ( input.LA(1)==98||input.LA(1)==101 ) {
 5761  0
                                                 input.consume();
 5762  0
                                                 state.errorRecovery=false;
 5763  0
                                                 state.failed=false;
 5764  
                                         }
 5765  
                                         else {
 5766  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 5767  0
                                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 5768  0
                                                 throw mse;
 5769  
                                         }
 5770  0
                                         pushFollow(FOLLOW_arguments_in_explicitConstructorInvocation4211);
 5771  0
                                         arguments();
 5772  0
                                         state._fsp--;
 5773  0
                                         if (state.failed) return;
 5774  0
                                         match(input,50,FOLLOW_50_in_explicitConstructorInvocation4213); if (state.failed) return;
 5775  
                                         }
 5776  0
                                         break;
 5777  
                                 case 2 :
 5778  
                                         // org/argouml/language/java/reveng/Java.g:1112:9: primary '.' ( nonWildcardTypeArguments )? 'super' arguments ';'
 5779  
                                         {
 5780  9
                                         pushFollow(FOLLOW_primary_in_explicitConstructorInvocation4223);
 5781  9
                                         primary();
 5782  9
                                         state._fsp--;
 5783  9
                                         if (state.failed) return;
 5784  18
                                         match(input,45,FOLLOW_45_in_explicitConstructorInvocation4225); if (state.failed) return;
 5785  
                                         // org/argouml/language/java/reveng/Java.g:1112:21: ( nonWildcardTypeArguments )?
 5786  0
                                         int alt85=2;
 5787  0
                                         int LA85_0 = input.LA(1);
 5788  0
                                         if ( (LA85_0==51) ) {
 5789  0
                                                 alt85=1;
 5790  
                                         }
 5791  0
                                         switch (alt85) {
 5792  
                                                 case 1 :
 5793  
                                                         // org/argouml/language/java/reveng/Java.g:1112:21: nonWildcardTypeArguments
 5794  
                                                         {
 5795  0
                                                         pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitConstructorInvocation4227);
 5796  0
                                                         nonWildcardTypeArguments();
 5797  0
                                                         state._fsp--;
 5798  0
                                                         if (state.failed) return;
 5799  
                                                         }
 5800  
                                                         break;
 5801  
 
 5802  
                                         }
 5803  
 
 5804  0
                                         match(input,98,FOLLOW_98_in_explicitConstructorInvocation4230); if (state.failed) return;
 5805  0
                                         pushFollow(FOLLOW_arguments_in_explicitConstructorInvocation4232);
 5806  0
                                         arguments();
 5807  0
                                         state._fsp--;
 5808  0
                                         if (state.failed) return;
 5809  0
                                         match(input,50,FOLLOW_50_in_explicitConstructorInvocation4234); if (state.failed) return;
 5810  
                                         }
 5811  
                                         break;
 5812  
 
 5813  
                         }
 5814  
                 }
 5815  0
                 catch (RecognitionException re) {
 5816  0
                         reportError(re);
 5817  0
                         recover(input,re);
 5818  
                 }
 5819  
                 finally {
 5820  
                         // do for sure before leaving
 5821  9
                         if ( state.backtracking>0 ) { memoize(input, 66, explicitConstructorInvocation_StartIndex); }
 5822  
 
 5823  0
                 }
 5824  0
         }
 5825  
         // $ANTLR end "explicitConstructorInvocation"
 5826  
 
 5827  
 
 5828  36
         public static class qualifiedName_return extends ParserRuleReturnScope {
 5829  
         };
 5830  
 
 5831  
 
 5832  
         // $ANTLR start "qualifiedName"
 5833  
         // org/argouml/language/java/reveng/Java.g:1116:1: qualifiedName : Identifier ( '.' Identifier )* ;
 5834  
         public final JavaParser.qualifiedName_return qualifiedName() throws RecognitionException {
 5835  36
                 JavaParser.qualifiedName_return retval = new JavaParser.qualifiedName_return();
 5836  36
                 retval.start = input.LT(1);
 5837  36
                 int qualifiedName_StartIndex = input.index();
 5838  
 
 5839  
                 try {
 5840  36
                         if ( state.backtracking>0 && alreadyParsedRule(input, 67) ) { return retval; }
 5841  
 
 5842  
                         // org/argouml/language/java/reveng/Java.g:1117:5: ( Identifier ( '.' Identifier )* )
 5843  
                         // org/argouml/language/java/reveng/Java.g:1117:9: Identifier ( '.' Identifier )*
 5844  
                         {
 5845  36
                         match(input,Identifier,FOLLOW_Identifier_in_qualifiedName4254); if (state.failed) return retval;
 5846  
                         // org/argouml/language/java/reveng/Java.g:1117:20: ( '.' Identifier )*
 5847  
                         loop87:
 5848  
                         while (true) {
 5849  68
                                 int alt87=2;
 5850  68
                                 int LA87_0 = input.LA(1);
 5851  68
                                 if ( (LA87_0==45) ) {
 5852  32
                                         int LA87_2 = input.LA(2);
 5853  32
                                         if ( (LA87_2==Identifier) ) {
 5854  32
                                                 alt87=1;
 5855  
                                         }
 5856  
 
 5857  
                                 }
 5858  
 
 5859  68
                                 switch (alt87) {
 5860  
                                 case 1 :
 5861  
                                         // org/argouml/language/java/reveng/Java.g:1117:21: '.' Identifier
 5862  
                                         {
 5863  32
                                         match(input,45,FOLLOW_45_in_qualifiedName4257); if (state.failed) return retval;
 5864  32
                                         match(input,Identifier,FOLLOW_Identifier_in_qualifiedName4259); if (state.failed) return retval;
 5865  
                                         }
 5866  
                                         break;
 5867  
 
 5868  
                                 default :
 5869  36
                                         break loop87;
 5870  
                                 }
 5871  32
                         }
 5872  
 
 5873  
                         }
 5874  
 
 5875  36
                         retval.stop = input.LT(-1);
 5876  
 
 5877  
                 }
 5878  0
                 catch (RecognitionException re) {
 5879  0
                         reportError(re);
 5880  0
                         recover(input,re);
 5881  
                 }
 5882  
                 finally {
 5883  
                         // do for sure before leaving
 5884  36
                         if ( state.backtracking>0 ) { memoize(input, 67, qualifiedName_StartIndex); }
 5885  
 
 5886  0
                 }
 5887  36
                 return retval;
 5888  
         }
 5889  
         // $ANTLR end "qualifiedName"
 5890  
 
 5891  
 
 5892  
 
 5893  
         // $ANTLR start "literal"
 5894  
         // org/argouml/language/java/reveng/Java.g:1120:1: literal : ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' );
 5895  
         public final void literal() throws RecognitionException {
 5896  45
                 int literal_StartIndex = input.index();
 5897  
 
 5898  
                 try {
 5899  45
                         if ( state.backtracking>0 && alreadyParsedRule(input, 68) ) { return; }
 5900  
 
 5901  
                         // org/argouml/language/java/reveng/Java.g:1121:5: ( integerLiteral | FloatingPointLiteral | CharacterLiteral | StringLiteral | booleanLiteral | 'null' )
 5902  45
                         int alt88=6;
 5903  45
                         switch ( input.LA(1) ) {
 5904  
                         case DecimalLiteral:
 5905  
                         case HexLiteral:
 5906  
                         case OctalLiteral:
 5907  
                                 {
 5908  31
                                 alt88=1;
 5909  
                                 }
 5910  31
                                 break;
 5911  
                         case FloatingPointLiteral:
 5912  
                                 {
 5913  0
                                 alt88=2;
 5914  
                                 }
 5915  0
                                 break;
 5916  
                         case CharacterLiteral:
 5917  
                                 {
 5918  0
                                 alt88=3;
 5919  
                                 }
 5920  0
                                 break;
 5921  
                         case StringLiteral:
 5922  
                                 {
 5923  14
                                 alt88=4;
 5924  
                                 }
 5925  14
                                 break;
 5926  
                         case 75:
 5927  
                         case 105:
 5928  
                                 {
 5929  0
                                 alt88=5;
 5930  
                                 }
 5931  0
                                 break;
 5932  
                         case 89:
 5933  
                                 {
 5934  0
                                 alt88=6;
 5935  
                                 }
 5936  0
                                 break;
 5937  
                         default:
 5938  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 5939  0
                                 NoViableAltException nvae =
 5940  
                                         new NoViableAltException("", 88, 0, input);
 5941  0
                                 throw nvae;
 5942  
                         }
 5943  45
                         switch (alt88) {
 5944  
                                 case 1 :
 5945  
                                         // org/argouml/language/java/reveng/Java.g:1121:9: integerLiteral
 5946  
                                         {
 5947  31
                                         pushFollow(FOLLOW_integerLiteral_in_literal4285);
 5948  31
                                         integerLiteral();
 5949  31
                                         state._fsp--;
 5950  31
                                         if (state.failed) return;
 5951  
                                         }
 5952  
                                         break;
 5953  
                                 case 2 :
 5954  
                                         // org/argouml/language/java/reveng/Java.g:1122:9: FloatingPointLiteral
 5955  
                                         {
 5956  0
                                         match(input,FloatingPointLiteral,FOLLOW_FloatingPointLiteral_in_literal4295); if (state.failed) return;
 5957  
                                         }
 5958  
                                         break;
 5959  
                                 case 3 :
 5960  
                                         // org/argouml/language/java/reveng/Java.g:1123:9: CharacterLiteral
 5961  
                                         {
 5962  0
                                         match(input,CharacterLiteral,FOLLOW_CharacterLiteral_in_literal4305); if (state.failed) return;
 5963  
                                         }
 5964  
                                         break;
 5965  
                                 case 4 :
 5966  
                                         // org/argouml/language/java/reveng/Java.g:1124:9: StringLiteral
 5967  
                                         {
 5968  14
                                         match(input,StringLiteral,FOLLOW_StringLiteral_in_literal4315); if (state.failed) return;
 5969  
                                         }
 5970  
                                         break;
 5971  
                                 case 5 :
 5972  
                                         // org/argouml/language/java/reveng/Java.g:1125:9: booleanLiteral
 5973  
                                         {
 5974  0
                                         pushFollow(FOLLOW_booleanLiteral_in_literal4325);
 5975  0
                                         booleanLiteral();
 5976  0
                                         state._fsp--;
 5977  0
                                         if (state.failed) return;
 5978  
                                         }
 5979  
                                         break;
 5980  
                                 case 6 :
 5981  
                                         // org/argouml/language/java/reveng/Java.g:1126:9: 'null'
 5982  
                                         {
 5983  0
                                         match(input,89,FOLLOW_89_in_literal4335); if (state.failed) return;
 5984  
                                         }
 5985  
                                         break;
 5986  
 
 5987  
                         }
 5988  
                 }
 5989  0
                 catch (RecognitionException re) {
 5990  0
                         reportError(re);
 5991  0
                         recover(input,re);
 5992  
                 }
 5993  
                 finally {
 5994  
                         // do for sure before leaving
 5995  45
                         if ( state.backtracking>0 ) { memoize(input, 68, literal_StartIndex); }
 5996  
 
 5997  0
                 }
 5998  45
         }
 5999  
         // $ANTLR end "literal"
 6000  
 
 6001  
 
 6002  
 
 6003  
         // $ANTLR start "integerLiteral"
 6004  
         // org/argouml/language/java/reveng/Java.g:1129:1: integerLiteral : ( HexLiteral | OctalLiteral | DecimalLiteral );
 6005  
         public final void integerLiteral() throws RecognitionException {
 6006  31
                 int integerLiteral_StartIndex = input.index();
 6007  
 
 6008  
                 try {
 6009  31
                         if ( state.backtracking>0 && alreadyParsedRule(input, 69) ) { return; }
 6010  
 
 6011  
                         // org/argouml/language/java/reveng/Java.g:1130:5: ( HexLiteral | OctalLiteral | DecimalLiteral )
 6012  
                         // org/argouml/language/java/reveng/Java.g:
 6013  
                         {
 6014  31
                         if ( input.LA(1)==DecimalLiteral||input.LA(1)==HexLiteral||input.LA(1)==OctalLiteral ) {
 6015  31
                                 input.consume();
 6016  31
                                 state.errorRecovery=false;
 6017  31
                                 state.failed=false;
 6018  
                         }
 6019  
                         else {
 6020  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 6021  0
                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 6022  0
                                 throw mse;
 6023  
                         }
 6024  
                         }
 6025  
 
 6026  
                 }
 6027  0
                 catch (RecognitionException re) {
 6028  0
                         reportError(re);
 6029  0
                         recover(input,re);
 6030  
                 }
 6031  
                 finally {
 6032  
                         // do for sure before leaving
 6033  31
                         if ( state.backtracking>0 ) { memoize(input, 69, integerLiteral_StartIndex); }
 6034  
 
 6035  0
                 }
 6036  31
         }
 6037  
         // $ANTLR end "integerLiteral"
 6038  
 
 6039  
 
 6040  
 
 6041  
         // $ANTLR start "booleanLiteral"
 6042  
         // org/argouml/language/java/reveng/Java.g:1135:1: booleanLiteral : ( 'true' | 'false' );
 6043  
         public final void booleanLiteral() throws RecognitionException {
 6044  0
                 int booleanLiteral_StartIndex = input.index();
 6045  
 
 6046  
                 try {
 6047  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 70) ) { return; }
 6048  
 
 6049  
                         // org/argouml/language/java/reveng/Java.g:1136:5: ( 'true' | 'false' )
 6050  
                         // org/argouml/language/java/reveng/Java.g:
 6051  
                         {
 6052  0
                         if ( input.LA(1)==75||input.LA(1)==105 ) {
 6053  0
                                 input.consume();
 6054  0
                                 state.errorRecovery=false;
 6055  0
                                 state.failed=false;
 6056  
                         }
 6057  
                         else {
 6058  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 6059  0
                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 6060  0
                                 throw mse;
 6061  
                         }
 6062  
                         }
 6063  
 
 6064  
                 }
 6065  0
                 catch (RecognitionException re) {
 6066  0
                         reportError(re);
 6067  0
                         recover(input,re);
 6068  
                 }
 6069  
                 finally {
 6070  
                         // do for sure before leaving
 6071  0
                         if ( state.backtracking>0 ) { memoize(input, 70, booleanLiteral_StartIndex); }
 6072  
 
 6073  0
                 }
 6074  0
         }
 6075  
         // $ANTLR end "booleanLiteral"
 6076  
 
 6077  
 
 6078  
 
 6079  
         // $ANTLR start "annotations"
 6080  
         // org/argouml/language/java/reveng/Java.g:1142:1: annotations : ( annotation )+ ;
 6081  
         public final void annotations() throws RecognitionException {
 6082  0
                 int annotations_StartIndex = input.index();
 6083  
 
 6084  
                 try {
 6085  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 71) ) { return; }
 6086  
 
 6087  
                         // org/argouml/language/java/reveng/Java.g:1143:5: ( ( annotation )+ )
 6088  
                         // org/argouml/language/java/reveng/Java.g:1143:9: ( annotation )+
 6089  
                         {
 6090  
                         // org/argouml/language/java/reveng/Java.g:1143:9: ( annotation )+
 6091  0
                         int cnt89=0;
 6092  
                         loop89:
 6093  
                         while (true) {
 6094  0
                                 int alt89=2;
 6095  0
                                 int LA89_0 = input.LA(1);
 6096  0
                                 if ( (LA89_0==56) ) {
 6097  0
                                         int LA89_2 = input.LA(2);
 6098  0
                                         if ( (LA89_2==Identifier) ) {
 6099  0
                                                 int LA89_16 = input.LA(3);
 6100  0
                                                 if ( (synpred129_Java()) ) {
 6101  0
                                                         alt89=1;
 6102  
                                                 }
 6103  
 
 6104  
                                         }
 6105  
 
 6106  
                                 }
 6107  
 
 6108  0
                                 switch (alt89) {
 6109  
                                 case 1 :
 6110  
                                         // org/argouml/language/java/reveng/Java.g:1143:9: annotation
 6111  
                                         {
 6112  0
                                         pushFollow(FOLLOW_annotation_in_annotations4424);
 6113  0
                                         annotation();
 6114  0
                                         state._fsp--;
 6115  0
                                         if (state.failed) return;
 6116  
                                         }
 6117  
                                         break;
 6118  
 
 6119  
                                 default :
 6120  0
                                         if ( cnt89 >= 1 ) break loop89;
 6121  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 6122  0
                                         EarlyExitException eee = new EarlyExitException(89, input);
 6123  0
                                         throw eee;
 6124  
                                 }
 6125  0
                                 cnt89++;
 6126  0
                         }
 6127  
 
 6128  
                         }
 6129  
 
 6130  
                 }
 6131  0
                 catch (RecognitionException re) {
 6132  0
                         reportError(re);
 6133  0
                         recover(input,re);
 6134  
                 }
 6135  
                 finally {
 6136  
                         // do for sure before leaving
 6137  0
                         if ( state.backtracking>0 ) { memoize(input, 71, annotations_StartIndex); }
 6138  
 
 6139  0
                 }
 6140  0
         }
 6141  
         // $ANTLR end "annotations"
 6142  
 
 6143  
 
 6144  
 
 6145  
         // $ANTLR start "annotation"
 6146  
         // org/argouml/language/java/reveng/Java.g:1146:1: annotation : '@' an= annotationName ( '(' ( elementValuePairs | elementValue )? ')' )? ;
 6147  
         public final void annotation() throws RecognitionException {
 6148  0
                 int annotation_StartIndex = input.index();
 6149  
 
 6150  0
                 ParserRuleReturnScope an =null;
 6151  
 
 6152  
                 try {
 6153  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 72) ) { return; }
 6154  
 
 6155  
                         // org/argouml/language/java/reveng/Java.g:1147:5: ( '@' an= annotationName ( '(' ( elementValuePairs | elementValue )? ')' )? )
 6156  
                         // org/argouml/language/java/reveng/Java.g:1147:9: '@' an= annotationName ( '(' ( elementValuePairs | elementValue )? ')' )?
 6157  
                         {
 6158  0
                         match(input,56,FOLLOW_56_in_annotation4444); if (state.failed) return;
 6159  0
                         pushFollow(FOLLOW_annotationName_in_annotation4448);
 6160  0
                         an=annotationName();
 6161  0
                         state._fsp--;
 6162  0
                         if (state.failed) return;
 6163  0
                         if ( state.backtracking==0 ) {
 6164  0
                                     getModeller().addAnnotation((an!=null?input.toString(an.start,an.stop):null));
 6165  
                                 }
 6166  
                         // org/argouml/language/java/reveng/Java.g:1151:9: ( '(' ( elementValuePairs | elementValue )? ')' )?
 6167  0
                         int alt91=2;
 6168  0
                         int LA91_0 = input.LA(1);
 6169  0
                         if ( (LA91_0==34) ) {
 6170  0
                                 alt91=1;
 6171  
                         }
 6172  0
                         switch (alt91) {
 6173  
                                 case 1 :
 6174  
                                         // org/argouml/language/java/reveng/Java.g:1151:11: '(' ( elementValuePairs | elementValue )? ')'
 6175  
                                         {
 6176  0
                                         match(input,34,FOLLOW_34_in_annotation4470); if (state.failed) return;
 6177  
                                         // org/argouml/language/java/reveng/Java.g:1151:15: ( elementValuePairs | elementValue )?
 6178  0
                                         int alt90=3;
 6179  0
                                         int LA90_0 = input.LA(1);
 6180  0
                                         if ( (LA90_0==Identifier) ) {
 6181  0
                                                 int LA90_1 = input.LA(2);
 6182  0
                                                 if ( (LA90_1==52) ) {
 6183  0
                                                         alt90=1;
 6184  
                                                 }
 6185  0
                                                 else if ( ((LA90_1 >= 28 && LA90_1 <= 29)||(LA90_1 >= 31 && LA90_1 <= 32)||(LA90_1 >= 34 && LA90_1 <= 36)||(LA90_1 >= 38 && LA90_1 <= 39)||(LA90_1 >= 42 && LA90_1 <= 43)||LA90_1==45||LA90_1==47||LA90_1==51||(LA90_1 >= 53 && LA90_1 <= 55)||LA90_1==57||LA90_1==59||LA90_1==83||LA90_1==111||LA90_1==113) ) {
 6186  0
                                                         alt90=2;
 6187  
                                                 }
 6188  0
                                         }
 6189  0
                                         else if ( ((LA90_0 >= CharacterLiteral && LA90_0 <= DecimalLiteral)||LA90_0==FloatingPointLiteral||LA90_0==HexLiteral||(LA90_0 >= OctalLiteral && LA90_0 <= StringLiteral)||LA90_0==27||LA90_0==34||(LA90_0 >= 38 && LA90_0 <= 39)||(LA90_0 >= 42 && LA90_0 <= 43)||LA90_0==56||LA90_0==62||LA90_0==64||LA90_0==67||LA90_0==72||LA90_0==75||LA90_0==78||LA90_0==84||LA90_0==86||(LA90_0 >= 88 && LA90_0 <= 89)||LA90_0==95||LA90_0==98||LA90_0==101||LA90_0==105||LA90_0==107||LA90_0==110||LA90_0==115) ) {
 6190  0
                                                 alt90=2;
 6191  
                                         }
 6192  0
                                         switch (alt90) {
 6193  
                                                 case 1 :
 6194  
                                                         // org/argouml/language/java/reveng/Java.g:1151:17: elementValuePairs
 6195  
                                                         {
 6196  0
                                                         pushFollow(FOLLOW_elementValuePairs_in_annotation4474);
 6197  0
                                                         elementValuePairs();
 6198  0
                                                         state._fsp--;
 6199  0
                                                         if (state.failed) return;
 6200  
                                                         }
 6201  
                                                         break;
 6202  
                                                 case 2 :
 6203  
                                                         // org/argouml/language/java/reveng/Java.g:1151:37: elementValue
 6204  
                                                         {
 6205  0
                                                         pushFollow(FOLLOW_elementValue_in_annotation4478);
 6206  0
                                                         elementValue();
 6207  0
                                                         state._fsp--;
 6208  0
                                                         if (state.failed) return;
 6209  
                                                         }
 6210  
                                                         break;
 6211  
 
 6212  
                                         }
 6213  
 
 6214  0
                                         match(input,35,FOLLOW_35_in_annotation4483); if (state.failed) return;
 6215  
                                         }
 6216  
                                         break;
 6217  
 
 6218  
                         }
 6219  
 
 6220  0
                         if ( state.backtracking==0 ) {
 6221  0
                                     getModeller().endAnnotation();
 6222  
                                 }
 6223  
                         }
 6224  
 
 6225  
                 }
 6226  0
                 catch (RecognitionException re) {
 6227  0
                         reportError(re);
 6228  0
                         recover(input,re);
 6229  
                 }
 6230  
                 finally {
 6231  
                         // do for sure before leaving
 6232  0
                         if ( state.backtracking>0 ) { memoize(input, 72, annotation_StartIndex); }
 6233  
 
 6234  0
                 }
 6235  0
         }
 6236  
         // $ANTLR end "annotation"
 6237  
 
 6238  
 
 6239  0
         public static class annotationName_return extends ParserRuleReturnScope {
 6240  
         };
 6241  
 
 6242  
 
 6243  
         // $ANTLR start "annotationName"
 6244  
         // org/argouml/language/java/reveng/Java.g:1157:1: annotationName : Identifier ( '.' Identifier )* ;
 6245  
         public final JavaParser.annotationName_return annotationName() throws RecognitionException {
 6246  0
                 JavaParser.annotationName_return retval = new JavaParser.annotationName_return();
 6247  0
                 retval.start = input.LT(1);
 6248  0
                 int annotationName_StartIndex = input.index();
 6249  
 
 6250  
                 try {
 6251  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 73) ) { return retval; }
 6252  
 
 6253  
                         // org/argouml/language/java/reveng/Java.g:1158:5: ( Identifier ( '.' Identifier )* )
 6254  
                         // org/argouml/language/java/reveng/Java.g:1158:7: Identifier ( '.' Identifier )*
 6255  
                         {
 6256  0
                         match(input,Identifier,FOLLOW_Identifier_in_annotationName4513); if (state.failed) return retval;
 6257  
                         // org/argouml/language/java/reveng/Java.g:1158:18: ( '.' Identifier )*
 6258  
                         loop92:
 6259  
                         while (true) {
 6260  0
                                 int alt92=2;
 6261  0
                                 int LA92_0 = input.LA(1);
 6262  0
                                 if ( (LA92_0==45) ) {
 6263  0
                                         alt92=1;
 6264  
                                 }
 6265  
 
 6266  0
                                 switch (alt92) {
 6267  
                                 case 1 :
 6268  
                                         // org/argouml/language/java/reveng/Java.g:1158:19: '.' Identifier
 6269  
                                         {
 6270  0
                                         match(input,45,FOLLOW_45_in_annotationName4516); if (state.failed) return retval;
 6271  0
                                         match(input,Identifier,FOLLOW_Identifier_in_annotationName4518); if (state.failed) return retval;
 6272  
                                         }
 6273  
                                         break;
 6274  
 
 6275  
                                 default :
 6276  0
                                         break loop92;
 6277  
                                 }
 6278  0
                         }
 6279  
 
 6280  
                         }
 6281  
 
 6282  0
                         retval.stop = input.LT(-1);
 6283  
 
 6284  
                 }
 6285  0
                 catch (RecognitionException re) {
 6286  0
                         reportError(re);
 6287  0
                         recover(input,re);
 6288  
                 }
 6289  
                 finally {
 6290  
                         // do for sure before leaving
 6291  0
                         if ( state.backtracking>0 ) { memoize(input, 73, annotationName_StartIndex); }
 6292  
 
 6293  0
                 }
 6294  0
                 return retval;
 6295  
         }
 6296  
         // $ANTLR end "annotationName"
 6297  
 
 6298  
 
 6299  
 
 6300  
         // $ANTLR start "elementValuePairs"
 6301  
         // org/argouml/language/java/reveng/Java.g:1161:1: elementValuePairs : elementValuePair ( ',' elementValuePair )* ;
 6302  
         public final void elementValuePairs() throws RecognitionException {
 6303  0
                 int elementValuePairs_StartIndex = input.index();
 6304  
 
 6305  
                 try {
 6306  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 74) ) { return; }
 6307  
 
 6308  
                         // org/argouml/language/java/reveng/Java.g:1162:5: ( elementValuePair ( ',' elementValuePair )* )
 6309  
                         // org/argouml/language/java/reveng/Java.g:1162:9: elementValuePair ( ',' elementValuePair )*
 6310  
                         {
 6311  0
                         pushFollow(FOLLOW_elementValuePair_in_elementValuePairs4539);
 6312  0
                         elementValuePair();
 6313  0
                         state._fsp--;
 6314  0
                         if (state.failed) return;
 6315  
                         // org/argouml/language/java/reveng/Java.g:1162:26: ( ',' elementValuePair )*
 6316  
                         loop93:
 6317  
                         while (true) {
 6318  0
                                 int alt93=2;
 6319  0
                                 int LA93_0 = input.LA(1);
 6320  0
                                 if ( (LA93_0==41) ) {
 6321  0
                                         alt93=1;
 6322  
                                 }
 6323  
 
 6324  0
                                 switch (alt93) {
 6325  
                                 case 1 :
 6326  
                                         // org/argouml/language/java/reveng/Java.g:1162:27: ',' elementValuePair
 6327  
                                         {
 6328  0
                                         match(input,41,FOLLOW_41_in_elementValuePairs4542); if (state.failed) return;
 6329  0
                                         pushFollow(FOLLOW_elementValuePair_in_elementValuePairs4544);
 6330  0
                                         elementValuePair();
 6331  0
                                         state._fsp--;
 6332  0
                                         if (state.failed) return;
 6333  
                                         }
 6334  
                                         break;
 6335  
 
 6336  
                                 default :
 6337  0
                                         break loop93;
 6338  
                                 }
 6339  0
                         }
 6340  
 
 6341  
                         }
 6342  
 
 6343  
                 }
 6344  0
                 catch (RecognitionException re) {
 6345  0
                         reportError(re);
 6346  0
                         recover(input,re);
 6347  
                 }
 6348  
                 finally {
 6349  
                         // do for sure before leaving
 6350  0
                         if ( state.backtracking>0 ) { memoize(input, 74, elementValuePairs_StartIndex); }
 6351  
 
 6352  0
                 }
 6353  0
         }
 6354  
         // $ANTLR end "elementValuePairs"
 6355  
 
 6356  
 
 6357  
 
 6358  
         // $ANTLR start "elementValuePair"
 6359  
         // org/argouml/language/java/reveng/Java.g:1165:1: elementValuePair : Identifier '=' elementValue ;
 6360  
         public final void elementValuePair() throws RecognitionException {
 6361  0
                 int elementValuePair_StartIndex = input.index();
 6362  
 
 6363  
                 try {
 6364  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 75) ) { return; }
 6365  
 
 6366  
                         // org/argouml/language/java/reveng/Java.g:1166:5: ( Identifier '=' elementValue )
 6367  
                         // org/argouml/language/java/reveng/Java.g:1166:9: Identifier '=' elementValue
 6368  
                         {
 6369  0
                         match(input,Identifier,FOLLOW_Identifier_in_elementValuePair4565); if (state.failed) return;
 6370  0
                         match(input,52,FOLLOW_52_in_elementValuePair4567); if (state.failed) return;
 6371  0
                         pushFollow(FOLLOW_elementValue_in_elementValuePair4569);
 6372  0
                         elementValue();
 6373  0
                         state._fsp--;
 6374  0
                         if (state.failed) return;
 6375  
                         }
 6376  
 
 6377  
                 }
 6378  0
                 catch (RecognitionException re) {
 6379  0
                         reportError(re);
 6380  0
                         recover(input,re);
 6381  
                 }
 6382  
                 finally {
 6383  
                         // do for sure before leaving
 6384  0
                         if ( state.backtracking>0 ) { memoize(input, 75, elementValuePair_StartIndex); }
 6385  
 
 6386  0
                 }
 6387  0
         }
 6388  
         // $ANTLR end "elementValuePair"
 6389  
 
 6390  
 
 6391  
 
 6392  
         // $ANTLR start "elementValue"
 6393  
         // org/argouml/language/java/reveng/Java.g:1169:1: elementValue : ( conditionalExpression | annotation | elementValueArrayInitializer );
 6394  
         public final void elementValue() throws RecognitionException {
 6395  0
                 int elementValue_StartIndex = input.index();
 6396  
 
 6397  
                 try {
 6398  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 76) ) { return; }
 6399  
 
 6400  
                         // org/argouml/language/java/reveng/Java.g:1170:5: ( conditionalExpression | annotation | elementValueArrayInitializer )
 6401  0
                         int alt94=3;
 6402  0
                         switch ( input.LA(1) ) {
 6403  
                         case CharacterLiteral:
 6404  
                         case DecimalLiteral:
 6405  
                         case FloatingPointLiteral:
 6406  
                         case HexLiteral:
 6407  
                         case Identifier:
 6408  
                         case OctalLiteral:
 6409  
                         case StringLiteral:
 6410  
                         case 27:
 6411  
                         case 34:
 6412  
                         case 38:
 6413  
                         case 39:
 6414  
                         case 42:
 6415  
                         case 43:
 6416  
                         case 62:
 6417  
                         case 64:
 6418  
                         case 67:
 6419  
                         case 72:
 6420  
                         case 75:
 6421  
                         case 78:
 6422  
                         case 84:
 6423  
                         case 86:
 6424  
                         case 88:
 6425  
                         case 89:
 6426  
                         case 95:
 6427  
                         case 98:
 6428  
                         case 101:
 6429  
                         case 105:
 6430  
                         case 107:
 6431  
                         case 115:
 6432  
                                 {
 6433  0
                                 alt94=1;
 6434  
                                 }
 6435  0
                                 break;
 6436  
                         case 56:
 6437  
                                 {
 6438  0
                                 alt94=2;
 6439  
                                 }
 6440  0
                                 break;
 6441  
                         case 110:
 6442  
                                 {
 6443  0
                                 alt94=3;
 6444  
                                 }
 6445  0
                                 break;
 6446  
                         default:
 6447  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 6448  0
                                 NoViableAltException nvae =
 6449  
                                         new NoViableAltException("", 94, 0, input);
 6450  0
                                 throw nvae;
 6451  
                         }
 6452  0
                         switch (alt94) {
 6453  
                                 case 1 :
 6454  
                                         // org/argouml/language/java/reveng/Java.g:1170:9: conditionalExpression
 6455  
                                         {
 6456  0
                                         pushFollow(FOLLOW_conditionalExpression_in_elementValue4592);
 6457  0
                                         conditionalExpression();
 6458  0
                                         state._fsp--;
 6459  0
                                         if (state.failed) return;
 6460  
                                         }
 6461  
                                         break;
 6462  
                                 case 2 :
 6463  
                                         // org/argouml/language/java/reveng/Java.g:1171:9: annotation
 6464  
                                         {
 6465  0
                                         pushFollow(FOLLOW_annotation_in_elementValue4602);
 6466  0
                                         annotation();
 6467  0
                                         state._fsp--;
 6468  0
                                         if (state.failed) return;
 6469  
                                         }
 6470  
                                         break;
 6471  
                                 case 3 :
 6472  
                                         // org/argouml/language/java/reveng/Java.g:1172:9: elementValueArrayInitializer
 6473  
                                         {
 6474  0
                                         pushFollow(FOLLOW_elementValueArrayInitializer_in_elementValue4612);
 6475  0
                                         elementValueArrayInitializer();
 6476  0
                                         state._fsp--;
 6477  0
                                         if (state.failed) return;
 6478  
                                         }
 6479  
                                         break;
 6480  
 
 6481  
                         }
 6482  
                 }
 6483  0
                 catch (RecognitionException re) {
 6484  0
                         reportError(re);
 6485  0
                         recover(input,re);
 6486  
                 }
 6487  
                 finally {
 6488  
                         // do for sure before leaving
 6489  0
                         if ( state.backtracking>0 ) { memoize(input, 76, elementValue_StartIndex); }
 6490  
 
 6491  0
                 }
 6492  0
         }
 6493  
         // $ANTLR end "elementValue"
 6494  
 
 6495  
 
 6496  
 
 6497  
         // $ANTLR start "elementValueArrayInitializer"
 6498  
         // org/argouml/language/java/reveng/Java.g:1175:1: elementValueArrayInitializer : '{' ( elementValue ( ',' elementValue )* )? ( ',' )? '}' ;
 6499  
         public final void elementValueArrayInitializer() throws RecognitionException {
 6500  0
                 int elementValueArrayInitializer_StartIndex = input.index();
 6501  
 
 6502  
                 try {
 6503  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 77) ) { return; }
 6504  
 
 6505  
                         // org/argouml/language/java/reveng/Java.g:1176:5: ( '{' ( elementValue ( ',' elementValue )* )? ( ',' )? '}' )
 6506  
                         // org/argouml/language/java/reveng/Java.g:1176:9: '{' ( elementValue ( ',' elementValue )* )? ( ',' )? '}'
 6507  
                         {
 6508  0
                         match(input,110,FOLLOW_110_in_elementValueArrayInitializer4631); if (state.failed) return;
 6509  
                         // org/argouml/language/java/reveng/Java.g:1176:13: ( elementValue ( ',' elementValue )* )?
 6510  0
                         int alt96=2;
 6511  0
                         int LA96_0 = input.LA(1);
 6512  0
                         if ( ((LA96_0 >= CharacterLiteral && LA96_0 <= DecimalLiteral)||LA96_0==FloatingPointLiteral||(LA96_0 >= HexLiteral && LA96_0 <= Identifier)||(LA96_0 >= OctalLiteral && LA96_0 <= StringLiteral)||LA96_0==27||LA96_0==34||(LA96_0 >= 38 && LA96_0 <= 39)||(LA96_0 >= 42 && LA96_0 <= 43)||LA96_0==56||LA96_0==62||LA96_0==64||LA96_0==67||LA96_0==72||LA96_0==75||LA96_0==78||LA96_0==84||LA96_0==86||(LA96_0 >= 88 && LA96_0 <= 89)||LA96_0==95||LA96_0==98||LA96_0==101||LA96_0==105||LA96_0==107||LA96_0==110||LA96_0==115) ) {
 6513  0
                                 alt96=1;
 6514  
                         }
 6515  0
                         switch (alt96) {
 6516  
                                 case 1 :
 6517  
                                         // org/argouml/language/java/reveng/Java.g:1176:14: elementValue ( ',' elementValue )*
 6518  
                                         {
 6519  0
                                         pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer4634);
 6520  0
                                         elementValue();
 6521  0
                                         state._fsp--;
 6522  0
                                         if (state.failed) return;
 6523  
                                         // org/argouml/language/java/reveng/Java.g:1176:27: ( ',' elementValue )*
 6524  
                                         loop95:
 6525  
                                         while (true) {
 6526  0
                                                 int alt95=2;
 6527  0
                                                 int LA95_0 = input.LA(1);
 6528  0
                                                 if ( (LA95_0==41) ) {
 6529  0
                                                         int LA95_1 = input.LA(2);
 6530  0
                                                         if ( ((LA95_1 >= CharacterLiteral && LA95_1 <= DecimalLiteral)||LA95_1==FloatingPointLiteral||(LA95_1 >= HexLiteral && LA95_1 <= Identifier)||(LA95_1 >= OctalLiteral && LA95_1 <= StringLiteral)||LA95_1==27||LA95_1==34||(LA95_1 >= 38 && LA95_1 <= 39)||(LA95_1 >= 42 && LA95_1 <= 43)||LA95_1==56||LA95_1==62||LA95_1==64||LA95_1==67||LA95_1==72||LA95_1==75||LA95_1==78||LA95_1==84||LA95_1==86||(LA95_1 >= 88 && LA95_1 <= 89)||LA95_1==95||LA95_1==98||LA95_1==101||LA95_1==105||LA95_1==107||LA95_1==110||LA95_1==115) ) {
 6531  0
                                                                 alt95=1;
 6532  
                                                         }
 6533  
 
 6534  
                                                 }
 6535  
 
 6536  0
                                                 switch (alt95) {
 6537  
                                                 case 1 :
 6538  
                                                         // org/argouml/language/java/reveng/Java.g:1176:28: ',' elementValue
 6539  
                                                         {
 6540  0
                                                         match(input,41,FOLLOW_41_in_elementValueArrayInitializer4637); if (state.failed) return;
 6541  0
                                                         pushFollow(FOLLOW_elementValue_in_elementValueArrayInitializer4639);
 6542  0
                                                         elementValue();
 6543  0
                                                         state._fsp--;
 6544  0
                                                         if (state.failed) return;
 6545  
                                                         }
 6546  
                                                         break;
 6547  
 
 6548  
                                                 default :
 6549  0
                                                         break loop95;
 6550  
                                                 }
 6551  0
                                         }
 6552  
 
 6553  
                                         }
 6554  
                                         break;
 6555  
 
 6556  
                         }
 6557  
 
 6558  
                         // org/argouml/language/java/reveng/Java.g:1176:49: ( ',' )?
 6559  0
                         int alt97=2;
 6560  0
                         int LA97_0 = input.LA(1);
 6561  0
                         if ( (LA97_0==41) ) {
 6562  0
                                 alt97=1;
 6563  
                         }
 6564  0
                         switch (alt97) {
 6565  
                                 case 1 :
 6566  
                                         // org/argouml/language/java/reveng/Java.g:1176:50: ','
 6567  
                                         {
 6568  0
                                         match(input,41,FOLLOW_41_in_elementValueArrayInitializer4646); if (state.failed) return;
 6569  
                                         }
 6570  
                                         break;
 6571  
 
 6572  
                         }
 6573  
 
 6574  0
                         match(input,114,FOLLOW_114_in_elementValueArrayInitializer4650); if (state.failed) return;
 6575  
                         }
 6576  
 
 6577  
                 }
 6578  0
                 catch (RecognitionException re) {
 6579  0
                         reportError(re);
 6580  0
                         recover(input,re);
 6581  
                 }
 6582  
                 finally {
 6583  
                         // do for sure before leaving
 6584  0
                         if ( state.backtracking>0 ) { memoize(input, 77, elementValueArrayInitializer_StartIndex); }
 6585  
 
 6586  0
                 }
 6587  0
         }
 6588  
         // $ANTLR end "elementValueArrayInitializer"
 6589  
 
 6590  
 
 6591  
 
 6592  
         // $ANTLR start "annotationTypeDeclaration"
 6593  
         // org/argouml/language/java/reveng/Java.g:1179:1: annotationTypeDeclaration[String javadoc, short modifiers] : '@' 'interface' name= Identifier annotationTypeBody ;
 6594  
         public final void annotationTypeDeclaration(String javadoc, short modifiers) throws RecognitionException {
 6595  0
                 int annotationTypeDeclaration_StartIndex = input.index();
 6596  
 
 6597  0
                 Token name=null;
 6598  
 
 6599  
                 try {
 6600  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 78) ) { return; }
 6601  
 
 6602  
                         // org/argouml/language/java/reveng/Java.g:1180:5: ( '@' 'interface' name= Identifier annotationTypeBody )
 6603  
                         // org/argouml/language/java/reveng/Java.g:1180:9: '@' 'interface' name= Identifier annotationTypeBody
 6604  
                         {
 6605  0
                         match(input,56,FOLLOW_56_in_annotationTypeDeclaration4670); if (state.failed) return;
 6606  0
                         match(input,85,FOLLOW_85_in_annotationTypeDeclaration4672); if (state.failed) return;
 6607  0
                         name=(Token)match(input,Identifier,FOLLOW_Identifier_in_annotationTypeDeclaration4676); if (state.failed) return;
 6608  0
                         if ( state.backtracking==0 ) {
 6609  0
                                     getModeller().addAnnotationDefinition(name.getText(), modifiers,
 6610  
                                         javadoc, (parserMode == MODE_IMPORT_PASS2));
 6611  
                                 }
 6612  0
                         pushFollow(FOLLOW_annotationTypeBody_in_annotationTypeDeclaration4696);
 6613  0
                         annotationTypeBody();
 6614  0
                         state._fsp--;
 6615  0
                         if (state.failed) return;
 6616  
                         }
 6617  
 
 6618  
                 }
 6619  0
                 catch (RecognitionException re) {
 6620  0
                         reportError(re);
 6621  0
                         recover(input,re);
 6622  
                 }
 6623  
                 finally {
 6624  
                         // do for sure before leaving
 6625  0
                         if ( state.backtracking>0 ) { memoize(input, 78, annotationTypeDeclaration_StartIndex); }
 6626  
 
 6627  0
                 }
 6628  0
         }
 6629  
         // $ANTLR end "annotationTypeDeclaration"
 6630  
 
 6631  
 
 6632  
 
 6633  
         // $ANTLR start "annotationTypeBody"
 6634  
         // org/argouml/language/java/reveng/Java.g:1189:1: annotationTypeBody : '{' ( annotationTypeElementDeclaration )* '}' ;
 6635  
         public final void annotationTypeBody() throws RecognitionException {
 6636  0
                 int annotationTypeBody_StartIndex = input.index();
 6637  
 
 6638  
                 try {
 6639  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 79) ) { return; }
 6640  
 
 6641  
                         // org/argouml/language/java/reveng/Java.g:1190:5: ( '{' ( annotationTypeElementDeclaration )* '}' )
 6642  
                         // org/argouml/language/java/reveng/Java.g:1190:9: '{' ( annotationTypeElementDeclaration )* '}'
 6643  
                         {
 6644  0
                         match(input,110,FOLLOW_110_in_annotationTypeBody4724); if (state.failed) return;
 6645  
                         // org/argouml/language/java/reveng/Java.g:1190:13: ( annotationTypeElementDeclaration )*
 6646  
                         loop98:
 6647  
                         while (true) {
 6648  0
                                 int alt98=2;
 6649  0
                                 int LA98_0 = input.LA(1);
 6650  0
                                 if ( (LA98_0==ENUM||LA98_0==Identifier||LA98_0==56||(LA98_0 >= 61 && LA98_0 <= 62)||LA98_0==64||(LA98_0 >= 67 && LA98_0 <= 68)||LA98_0==72||LA98_0==76||LA98_0==78||(LA98_0 >= 84 && LA98_0 <= 87)||(LA98_0 >= 91 && LA98_0 <= 93)||(LA98_0 >= 95 && LA98_0 <= 97)||LA98_0==100||LA98_0==104||LA98_0==108) ) {
 6651  0
                                         alt98=1;
 6652  
                                 }
 6653  
 
 6654  0
                                 switch (alt98) {
 6655  
                                 case 1 :
 6656  
                                         // org/argouml/language/java/reveng/Java.g:1190:14: annotationTypeElementDeclaration
 6657  
                                         {
 6658  0
                                         pushFollow(FOLLOW_annotationTypeElementDeclaration_in_annotationTypeBody4727);
 6659  0
                                         annotationTypeElementDeclaration();
 6660  0
                                         state._fsp--;
 6661  0
                                         if (state.failed) return;
 6662  
                                         }
 6663  
                                         break;
 6664  
 
 6665  
                                 default :
 6666  0
                                         break loop98;
 6667  
                                 }
 6668  0
                         }
 6669  
 
 6670  0
                         match(input,114,FOLLOW_114_in_annotationTypeBody4731); if (state.failed) return;
 6671  
                         }
 6672  
 
 6673  
                 }
 6674  0
                 catch (RecognitionException re) {
 6675  0
                         reportError(re);
 6676  0
                         recover(input,re);
 6677  
                 }
 6678  
                 finally {
 6679  
                         // do for sure before leaving
 6680  0
                         if ( state.backtracking>0 ) { memoize(input, 79, annotationTypeBody_StartIndex); }
 6681  
 
 6682  0
                 }
 6683  0
         }
 6684  
         // $ANTLR end "annotationTypeBody"
 6685  
 
 6686  
 
 6687  
 
 6688  
         // $ANTLR start "annotationTypeElementDeclaration"
 6689  
         // org/argouml/language/java/reveng/Java.g:1193:1: annotationTypeElementDeclaration : modifiers annotationTypeElementRest ;
 6690  
         public final void annotationTypeElementDeclaration() throws RecognitionException {
 6691  0
                 int annotationTypeElementDeclaration_StartIndex = input.index();
 6692  
 
 6693  
                 try {
 6694  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 80) ) { return; }
 6695  
 
 6696  
                         // org/argouml/language/java/reveng/Java.g:1194:5: ( modifiers annotationTypeElementRest )
 6697  
                         // org/argouml/language/java/reveng/Java.g:1194:9: modifiers annotationTypeElementRest
 6698  
                         {
 6699  0
                         pushFollow(FOLLOW_modifiers_in_annotationTypeElementDeclaration4750);
 6700  0
                         modifiers();
 6701  0
                         state._fsp--;
 6702  0
                         if (state.failed) return;
 6703  0
                         pushFollow(FOLLOW_annotationTypeElementRest_in_annotationTypeElementDeclaration4752);
 6704  0
                         annotationTypeElementRest();
 6705  0
                         state._fsp--;
 6706  0
                         if (state.failed) return;
 6707  
                         }
 6708  
 
 6709  
                 }
 6710  0
                 catch (RecognitionException re) {
 6711  0
                         reportError(re);
 6712  0
                         recover(input,re);
 6713  
                 }
 6714  
                 finally {
 6715  
                         // do for sure before leaving
 6716  0
                         if ( state.backtracking>0 ) { memoize(input, 80, annotationTypeElementDeclaration_StartIndex); }
 6717  
 
 6718  0
                 }
 6719  0
         }
 6720  
         // $ANTLR end "annotationTypeElementDeclaration"
 6721  
 
 6722  
 
 6723  
 
 6724  
         // $ANTLR start "annotationTypeElementRest"
 6725  
         // org/argouml/language/java/reveng/Java.g:1197:1: annotationTypeElementRest : ( type annotationMethodOrConstantRest ';' | normalClassDeclaration[null, (short)0] ( ';' )? | normalInterfaceDeclaration[null, (short)0] ( ';' )? | enumDeclaration[null, (short)0] ( ';' )? | annotationTypeDeclaration[null, (short)0] ( ';' )? );
 6726  
         public final void annotationTypeElementRest() throws RecognitionException {
 6727  0
                 int annotationTypeElementRest_StartIndex = input.index();
 6728  
 
 6729  
                 try {
 6730  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 81) ) { return; }
 6731  
 
 6732  
                         // org/argouml/language/java/reveng/Java.g:1198:5: ( type annotationMethodOrConstantRest ';' | normalClassDeclaration[null, (short)0] ( ';' )? | normalInterfaceDeclaration[null, (short)0] ( ';' )? | enumDeclaration[null, (short)0] ( ';' )? | annotationTypeDeclaration[null, (short)0] ( ';' )? )
 6733  0
                         int alt103=5;
 6734  0
                         switch ( input.LA(1) ) {
 6735  
                         case Identifier:
 6736  
                         case 62:
 6737  
                         case 64:
 6738  
                         case 67:
 6739  
                         case 72:
 6740  
                         case 78:
 6741  
                         case 84:
 6742  
                         case 86:
 6743  
                         case 95:
 6744  
                                 {
 6745  0
                                 alt103=1;
 6746  
                                 }
 6747  0
                                 break;
 6748  
                         case 68:
 6749  
                                 {
 6750  0
                                 alt103=2;
 6751  
                                 }
 6752  0
                                 break;
 6753  
                         case 85:
 6754  
                                 {
 6755  0
                                 alt103=3;
 6756  
                                 }
 6757  0
                                 break;
 6758  
                         case ENUM:
 6759  
                                 {
 6760  0
                                 alt103=4;
 6761  
                                 }
 6762  0
                                 break;
 6763  
                         case 56:
 6764  
                                 {
 6765  0
                                 alt103=5;
 6766  
                                 }
 6767  0
                                 break;
 6768  
                         default:
 6769  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 6770  0
                                 NoViableAltException nvae =
 6771  
                                         new NoViableAltException("", 103, 0, input);
 6772  0
                                 throw nvae;
 6773  
                         }
 6774  0
                         switch (alt103) {
 6775  
                                 case 1 :
 6776  
                                         // org/argouml/language/java/reveng/Java.g:1198:9: type annotationMethodOrConstantRest ';'
 6777  
                                         {
 6778  0
                                         pushFollow(FOLLOW_type_in_annotationTypeElementRest4771);
 6779  0
                                         type();
 6780  0
                                         state._fsp--;
 6781  0
                                         if (state.failed) return;
 6782  0
                                         pushFollow(FOLLOW_annotationMethodOrConstantRest_in_annotationTypeElementRest4773);
 6783  0
                                         annotationMethodOrConstantRest();
 6784  0
                                         state._fsp--;
 6785  0
                                         if (state.failed) return;
 6786  0
                                         match(input,50,FOLLOW_50_in_annotationTypeElementRest4775); if (state.failed) return;
 6787  
                                         }
 6788  
                                         break;
 6789  
                                 case 2 :
 6790  
                                         // org/argouml/language/java/reveng/Java.g:1199:9: normalClassDeclaration[null, (short)0] ( ';' )?
 6791  
                                         {
 6792  0
                                         pushFollow(FOLLOW_normalClassDeclaration_in_annotationTypeElementRest4785);
 6793  0
                                         normalClassDeclaration(null, (short)0);
 6794  0
                                         state._fsp--;
 6795  0
                                         if (state.failed) return;
 6796  
                                         // org/argouml/language/java/reveng/Java.g:1199:48: ( ';' )?
 6797  0
                                         int alt99=2;
 6798  0
                                         int LA99_0 = input.LA(1);
 6799  0
                                         if ( (LA99_0==50) ) {
 6800  0
                                                 alt99=1;
 6801  
                                         }
 6802  0
                                         switch (alt99) {
 6803  
                                                 case 1 :
 6804  
                                                         // org/argouml/language/java/reveng/Java.g:1199:48: ';'
 6805  
                                                         {
 6806  0
                                                         match(input,50,FOLLOW_50_in_annotationTypeElementRest4788); if (state.failed) return;
 6807  
                                                         }
 6808  
                                                         break;
 6809  
 
 6810  
                                         }
 6811  
 
 6812  
                                         }
 6813  0
                                         break;
 6814  
                                 case 3 :
 6815  
                                         // org/argouml/language/java/reveng/Java.g:1200:9: normalInterfaceDeclaration[null, (short)0] ( ';' )?
 6816  
                                         {
 6817  0
                                         pushFollow(FOLLOW_normalInterfaceDeclaration_in_annotationTypeElementRest4799);
 6818  0
                                         normalInterfaceDeclaration(null, (short)0);
 6819  0
                                         state._fsp--;
 6820  0
                                         if (state.failed) return;
 6821  
                                         // org/argouml/language/java/reveng/Java.g:1200:52: ( ';' )?
 6822  0
                                         int alt100=2;
 6823  0
                                         int LA100_0 = input.LA(1);
 6824  0
                                         if ( (LA100_0==50) ) {
 6825  0
                                                 alt100=1;
 6826  
                                         }
 6827  0
                                         switch (alt100) {
 6828  
                                                 case 1 :
 6829  
                                                         // org/argouml/language/java/reveng/Java.g:1200:52: ';'
 6830  
                                                         {
 6831  0
                                                         match(input,50,FOLLOW_50_in_annotationTypeElementRest4802); if (state.failed) return;
 6832  
                                                         }
 6833  
                                                         break;
 6834  
 
 6835  
                                         }
 6836  
 
 6837  
                                         }
 6838  0
                                         break;
 6839  
                                 case 4 :
 6840  
                                         // org/argouml/language/java/reveng/Java.g:1201:9: enumDeclaration[null, (short)0] ( ';' )?
 6841  
                                         {
 6842  0
                                         pushFollow(FOLLOW_enumDeclaration_in_annotationTypeElementRest4813);
 6843  0
                                         enumDeclaration(null, (short)0);
 6844  0
                                         state._fsp--;
 6845  0
                                         if (state.failed) return;
 6846  
                                         // org/argouml/language/java/reveng/Java.g:1201:41: ( ';' )?
 6847  0
                                         int alt101=2;
 6848  0
                                         int LA101_0 = input.LA(1);
 6849  0
                                         if ( (LA101_0==50) ) {
 6850  0
                                                 alt101=1;
 6851  
                                         }
 6852  0
                                         switch (alt101) {
 6853  
                                                 case 1 :
 6854  
                                                         // org/argouml/language/java/reveng/Java.g:1201:41: ';'
 6855  
                                                         {
 6856  0
                                                         match(input,50,FOLLOW_50_in_annotationTypeElementRest4816); if (state.failed) return;
 6857  
                                                         }
 6858  
                                                         break;
 6859  
 
 6860  
                                         }
 6861  
 
 6862  
                                         }
 6863  0
                                         break;
 6864  
                                 case 5 :
 6865  
                                         // org/argouml/language/java/reveng/Java.g:1202:9: annotationTypeDeclaration[null, (short)0] ( ';' )?
 6866  
                                         {
 6867  0
                                         pushFollow(FOLLOW_annotationTypeDeclaration_in_annotationTypeElementRest4827);
 6868  0
                                         annotationTypeDeclaration(null, (short)0);
 6869  0
                                         state._fsp--;
 6870  0
                                         if (state.failed) return;
 6871  
                                         // org/argouml/language/java/reveng/Java.g:1202:51: ( ';' )?
 6872  0
                                         int alt102=2;
 6873  0
                                         int LA102_0 = input.LA(1);
 6874  0
                                         if ( (LA102_0==50) ) {
 6875  0
                                                 alt102=1;
 6876  
                                         }
 6877  0
                                         switch (alt102) {
 6878  
                                                 case 1 :
 6879  
                                                         // org/argouml/language/java/reveng/Java.g:1202:51: ';'
 6880  
                                                         {
 6881  0
                                                         match(input,50,FOLLOW_50_in_annotationTypeElementRest4830); if (state.failed) return;
 6882  
                                                         }
 6883  
                                                         break;
 6884  
 
 6885  
                                         }
 6886  
 
 6887  
                                         }
 6888  
                                         break;
 6889  
 
 6890  
                         }
 6891  
                 }
 6892  0
                 catch (RecognitionException re) {
 6893  0
                         reportError(re);
 6894  0
                         recover(input,re);
 6895  
                 }
 6896  
                 finally {
 6897  
                         // do for sure before leaving
 6898  0
                         if ( state.backtracking>0 ) { memoize(input, 81, annotationTypeElementRest_StartIndex); }
 6899  
 
 6900  0
                 }
 6901  0
         }
 6902  
         // $ANTLR end "annotationTypeElementRest"
 6903  
 
 6904  
 
 6905  
 
 6906  
         // $ANTLR start "annotationMethodOrConstantRest"
 6907  
         // org/argouml/language/java/reveng/Java.g:1205:1: annotationMethodOrConstantRest : ( annotationMethodRest | annotationConstantRest );
 6908  
         public final void annotationMethodOrConstantRest() throws RecognitionException {
 6909  0
                 int annotationMethodOrConstantRest_StartIndex = input.index();
 6910  
 
 6911  
                 try {
 6912  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 82) ) { return; }
 6913  
 
 6914  
                         // org/argouml/language/java/reveng/Java.g:1206:5: ( annotationMethodRest | annotationConstantRest )
 6915  0
                         int alt104=2;
 6916  0
                         int LA104_0 = input.LA(1);
 6917  0
                         if ( (LA104_0==Identifier) ) {
 6918  0
                                 int LA104_1 = input.LA(2);
 6919  0
                                 if ( (LA104_1==34) ) {
 6920  0
                                         alt104=1;
 6921  
                                 }
 6922  0
                                 else if ( (LA104_1==41||LA104_1==50||LA104_1==52||LA104_1==57) ) {
 6923  0
                                         alt104=2;
 6924  
                                 }
 6925  
 
 6926  
                                 else {
 6927  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 6928  0
                                         int nvaeMark = input.mark();
 6929  
                                         try {
 6930  0
                                                 input.consume();
 6931  0
                                                 NoViableAltException nvae =
 6932  
                                                         new NoViableAltException("", 104, 1, input);
 6933  0
                                                 throw nvae;
 6934  
                                         } finally {
 6935  0
                                                 input.rewind(nvaeMark);
 6936  0
                                         }
 6937  
                                 }
 6938  
 
 6939  0
                         }
 6940  
 
 6941  
                         else {
 6942  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 6943  0
                                 NoViableAltException nvae =
 6944  
                                         new NoViableAltException("", 104, 0, input);
 6945  0
                                 throw nvae;
 6946  
                         }
 6947  
 
 6948  0
                         switch (alt104) {
 6949  
                                 case 1 :
 6950  
                                         // org/argouml/language/java/reveng/Java.g:1206:9: annotationMethodRest
 6951  
                                         {
 6952  0
                                         pushFollow(FOLLOW_annotationMethodRest_in_annotationMethodOrConstantRest4850);
 6953  0
                                         annotationMethodRest();
 6954  0
                                         state._fsp--;
 6955  0
                                         if (state.failed) return;
 6956  
                                         }
 6957  
                                         break;
 6958  
                                 case 2 :
 6959  
                                         // org/argouml/language/java/reveng/Java.g:1207:9: annotationConstantRest
 6960  
                                         {
 6961  0
                                         pushFollow(FOLLOW_annotationConstantRest_in_annotationMethodOrConstantRest4860);
 6962  0
                                         annotationConstantRest();
 6963  0
                                         state._fsp--;
 6964  0
                                         if (state.failed) return;
 6965  
                                         }
 6966  
                                         break;
 6967  
 
 6968  
                         }
 6969  
                 }
 6970  0
                 catch (RecognitionException re) {
 6971  0
                         reportError(re);
 6972  0
                         recover(input,re);
 6973  
                 }
 6974  
                 finally {
 6975  
                         // do for sure before leaving
 6976  0
                         if ( state.backtracking>0 ) { memoize(input, 82, annotationMethodOrConstantRest_StartIndex); }
 6977  
 
 6978  0
                 }
 6979  0
         }
 6980  
         // $ANTLR end "annotationMethodOrConstantRest"
 6981  
 
 6982  
 
 6983  
 
 6984  
         // $ANTLR start "annotationMethodRest"
 6985  
         // org/argouml/language/java/reveng/Java.g:1210:1: annotationMethodRest : Identifier '(' ')' ( defaultValue )? ;
 6986  
         public final void annotationMethodRest() throws RecognitionException {
 6987  0
                 int annotationMethodRest_StartIndex = input.index();
 6988  
 
 6989  
                 try {
 6990  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 83) ) { return; }
 6991  
 
 6992  
                         // org/argouml/language/java/reveng/Java.g:1211:5: ( Identifier '(' ')' ( defaultValue )? )
 6993  
                         // org/argouml/language/java/reveng/Java.g:1211:9: Identifier '(' ')' ( defaultValue )?
 6994  
                         {
 6995  0
                         match(input,Identifier,FOLLOW_Identifier_in_annotationMethodRest4883); if (state.failed) return;
 6996  0
                         match(input,34,FOLLOW_34_in_annotationMethodRest4885); if (state.failed) return;
 6997  0
                         match(input,35,FOLLOW_35_in_annotationMethodRest4887); if (state.failed) return;
 6998  
                         // org/argouml/language/java/reveng/Java.g:1211:28: ( defaultValue )?
 6999  0
                         int alt105=2;
 7000  0
                         int LA105_0 = input.LA(1);
 7001  0
                         if ( (LA105_0==70) ) {
 7002  0
                                 alt105=1;
 7003  
                         }
 7004  0
                         switch (alt105) {
 7005  
                                 case 1 :
 7006  
                                         // org/argouml/language/java/reveng/Java.g:1211:29: defaultValue
 7007  
                                         {
 7008  0
                                         pushFollow(FOLLOW_defaultValue_in_annotationMethodRest4890);
 7009  0
                                         defaultValue();
 7010  0
                                         state._fsp--;
 7011  0
                                         if (state.failed) return;
 7012  
                                         }
 7013  
                                         break;
 7014  
 
 7015  
                         }
 7016  
 
 7017  
                         }
 7018  
 
 7019  
                 }
 7020  0
                 catch (RecognitionException re) {
 7021  0
                         reportError(re);
 7022  0
                         recover(input,re);
 7023  
                 }
 7024  
                 finally {
 7025  
                         // do for sure before leaving
 7026  0
                         if ( state.backtracking>0 ) { memoize(input, 83, annotationMethodRest_StartIndex); }
 7027  
 
 7028  0
                 }
 7029  0
         }
 7030  
         // $ANTLR end "annotationMethodRest"
 7031  
 
 7032  
 
 7033  
 
 7034  
         // $ANTLR start "annotationConstantRest"
 7035  
         // org/argouml/language/java/reveng/Java.g:1214:1: annotationConstantRest : variableDeclarators[\"\", (short)0, null] ;
 7036  
         public final void annotationConstantRest() throws RecognitionException {
 7037  0
                 int annotationConstantRest_StartIndex = input.index();
 7038  
 
 7039  
                 try {
 7040  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 84) ) { return; }
 7041  
 
 7042  
                         // org/argouml/language/java/reveng/Java.g:1215:5: ( variableDeclarators[\"\", (short)0, null] )
 7043  
                         // org/argouml/language/java/reveng/Java.g:1215:9: variableDeclarators[\"\", (short)0, null]
 7044  
                         {
 7045  0
                         pushFollow(FOLLOW_variableDeclarators_in_annotationConstantRest4915);
 7046  0
                         variableDeclarators("", (short)0, null);
 7047  0
                         state._fsp--;
 7048  0
                         if (state.failed) return;
 7049  
                         }
 7050  
 
 7051  
                 }
 7052  0
                 catch (RecognitionException re) {
 7053  0
                         reportError(re);
 7054  0
                         recover(input,re);
 7055  
                 }
 7056  
                 finally {
 7057  
                         // do for sure before leaving
 7058  0
                         if ( state.backtracking>0 ) { memoize(input, 84, annotationConstantRest_StartIndex); }
 7059  
 
 7060  0
                 }
 7061  0
         }
 7062  
         // $ANTLR end "annotationConstantRest"
 7063  
 
 7064  
 
 7065  
 
 7066  
         // $ANTLR start "defaultValue"
 7067  
         // org/argouml/language/java/reveng/Java.g:1218:1: defaultValue : 'default' elementValue ;
 7068  
         public final void defaultValue() throws RecognitionException {
 7069  0
                 int defaultValue_StartIndex = input.index();
 7070  
 
 7071  
                 try {
 7072  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 85) ) { return; }
 7073  
 
 7074  
                         // org/argouml/language/java/reveng/Java.g:1219:5: ( 'default' elementValue )
 7075  
                         // org/argouml/language/java/reveng/Java.g:1219:9: 'default' elementValue
 7076  
                         {
 7077  0
                         match(input,70,FOLLOW_70_in_defaultValue4939); if (state.failed) return;
 7078  0
                         pushFollow(FOLLOW_elementValue_in_defaultValue4941);
 7079  0
                         elementValue();
 7080  0
                         state._fsp--;
 7081  0
                         if (state.failed) return;
 7082  
                         }
 7083  
 
 7084  
                 }
 7085  0
                 catch (RecognitionException re) {
 7086  0
                         reportError(re);
 7087  0
                         recover(input,re);
 7088  
                 }
 7089  
                 finally {
 7090  
                         // do for sure before leaving
 7091  0
                         if ( state.backtracking>0 ) { memoize(input, 85, defaultValue_StartIndex); }
 7092  
 
 7093  0
                 }
 7094  0
         }
 7095  
         // $ANTLR end "defaultValue"
 7096  
 
 7097  
 
 7098  23
         public static class block_return extends ParserRuleReturnScope {
 7099  
         };
 7100  
 
 7101  
 
 7102  
         // $ANTLR start "block"
 7103  
         // org/argouml/language/java/reveng/Java.g:1224:1: block : '{' ( blockStatement )* '}' ;
 7104  
         public final JavaParser.block_return block() throws RecognitionException {
 7105  23
                 JavaParser.block_return retval = new JavaParser.block_return();
 7106  23
                 retval.start = input.LT(1);
 7107  23
                 int block_StartIndex = input.index();
 7108  
 
 7109  
 
 7110  23
                         boolean isOutestCompStat = !isInCompoundStatement();
 7111  
                     
 7112  
                 try {
 7113  23
                         if ( state.backtracking>0 && alreadyParsedRule(input, 86) ) { return retval; }
 7114  
 
 7115  
                         // org/argouml/language/java/reveng/Java.g:1228:5: ( '{' ( blockStatement )* '}' )
 7116  
                         // org/argouml/language/java/reveng/Java.g:1228:9: '{' ( blockStatement )* '}'
 7117  
                         {
 7118  23
                         if ( state.backtracking==0 ) {
 7119  23
                                     if (isOutestCompStat) {
 7120  23
                                         setIsInCompoundStatement(true);
 7121  
                                     }
 7122  
                                 }
 7123  23
                         match(input,110,FOLLOW_110_in_block4980); if (state.failed) return retval;
 7124  
                         // org/argouml/language/java/reveng/Java.g:1233:13: ( blockStatement )*
 7125  
                         loop106:
 7126  
                         while (true) {
 7127  46
                                 int alt106=2;
 7128  46
                                 int LA106_0 = input.LA(1);
 7129  46
                                 if ( (LA106_0==ASSERT||(LA106_0 >= CharacterLiteral && LA106_0 <= DecimalLiteral)||LA106_0==ENUM||LA106_0==FloatingPointLiteral||(LA106_0 >= HexLiteral && LA106_0 <= Identifier)||(LA106_0 >= OctalLiteral && LA106_0 <= StringLiteral)||LA106_0==27||LA106_0==34||(LA106_0 >= 38 && LA106_0 <= 39)||(LA106_0 >= 42 && LA106_0 <= 43)||LA106_0==50||LA106_0==56||(LA106_0 >= 61 && LA106_0 <= 64)||(LA106_0 >= 67 && LA106_0 <= 69)||(LA106_0 >= 71 && LA106_0 <= 72)||(LA106_0 >= 75 && LA106_0 <= 76)||(LA106_0 >= 78 && LA106_0 <= 80)||(LA106_0 >= 84 && LA106_0 <= 86)||(LA106_0 >= 88 && LA106_0 <= 89)||(LA106_0 >= 91 && LA106_0 <= 102)||(LA106_0 >= 105 && LA106_0 <= 107)||(LA106_0 >= 109 && LA106_0 <= 110)||LA106_0==115) ) {
 7130  23
                                         alt106=1;
 7131  
                                 }
 7132  
 
 7133  46
                                 switch (alt106) {
 7134  
                                 case 1 :
 7135  
                                         // org/argouml/language/java/reveng/Java.g:1233:13: blockStatement
 7136  
                                         {
 7137  23
                                         pushFollow(FOLLOW_blockStatement_in_block4982);
 7138  23
                                         blockStatement();
 7139  23
                                         state._fsp--;
 7140  23
                                         if (state.failed) return retval;
 7141  
                                         }
 7142  
                                         break;
 7143  
 
 7144  
                                 default :
 7145  23
                                         break loop106;
 7146  
                                 }
 7147  23
                         }
 7148  
 
 7149  23
                         match(input,114,FOLLOW_114_in_block4985); if (state.failed) return retval;
 7150  23
                         if ( state.backtracking==0 ) {
 7151  23
                                     if (isOutestCompStat) {
 7152  23
                                         String b = input.toString(retval.start,input.LT(-1));
 7153  
                                         // the body is everything between { and }, but for
 7154  
                                         // compatibility reasons the last ws's get stripped off
 7155  
                                         // and a newline is added
 7156  23
                                         b = b.substring(0, b.length() - 1).trim();
 7157  23
                                         setBody(b.substring(1) + '\n');
 7158  23
                                         setIsInCompoundStatement(false);
 7159  
                                     }
 7160  
                                 }
 7161  
                         }
 7162  
 
 7163  23
                         retval.stop = input.LT(-1);
 7164  
 
 7165  
                 }
 7166  0
                 catch (RecognitionException re) {
 7167  0
                         reportError(re);
 7168  0
                         recover(input,re);
 7169  
                 }
 7170  
                 finally {
 7171  
                         // do for sure before leaving
 7172  23
                         if ( state.backtracking>0 ) { memoize(input, 86, block_StartIndex); }
 7173  
 
 7174  0
                 }
 7175  23
                 return retval;
 7176  
         }
 7177  
         // $ANTLR end "block"
 7178  
 
 7179  
 
 7180  
 
 7181  
         // $ANTLR start "blockStatement"
 7182  
         // org/argouml/language/java/reveng/Java.g:1247:1: blockStatement : ( localVariableDeclarationStatement | classOrInterfaceDeclaration | statement );
 7183  
         public final void blockStatement() throws RecognitionException {
 7184  40
                 int blockStatement_StartIndex = input.index();
 7185  
 
 7186  
                 try {
 7187  40
                         if ( state.backtracking>0 && alreadyParsedRule(input, 87) ) { return; }
 7188  
 
 7189  
                         // org/argouml/language/java/reveng/Java.g:1248:5: ( localVariableDeclarationStatement | classOrInterfaceDeclaration | statement )
 7190  40
                         int alt107=3;
 7191  40
                         alt107 = dfa107.predict(input);
 7192  40
                         switch (alt107) {
 7193  
                                 case 1 :
 7194  
                                         // org/argouml/language/java/reveng/Java.g:1248:9: localVariableDeclarationStatement
 7195  
                                         {
 7196  0
                                         pushFollow(FOLLOW_localVariableDeclarationStatement_in_blockStatement5018);
 7197  0
                                         localVariableDeclarationStatement();
 7198  0
                                         state._fsp--;
 7199  0
                                         if (state.failed) return;
 7200  
                                         }
 7201  
                                         break;
 7202  
                                 case 2 :
 7203  
                                         // org/argouml/language/java/reveng/Java.g:1249:9: classOrInterfaceDeclaration
 7204  
                                         {
 7205  0
                                         pushFollow(FOLLOW_classOrInterfaceDeclaration_in_blockStatement5028);
 7206  0
                                         classOrInterfaceDeclaration();
 7207  0
                                         state._fsp--;
 7208  0
                                         if (state.failed) return;
 7209  
                                         }
 7210  
                                         break;
 7211  
                                 case 3 :
 7212  
                                         // org/argouml/language/java/reveng/Java.g:1250:9: statement
 7213  
                                         {
 7214  40
                                         pushFollow(FOLLOW_statement_in_blockStatement5038);
 7215  40
                                         statement();
 7216  40
                                         state._fsp--;
 7217  40
                                         if (state.failed) return;
 7218  
                                         }
 7219  
                                         break;
 7220  
 
 7221  
                         }
 7222  
                 }
 7223  0
                 catch (RecognitionException re) {
 7224  0
                         reportError(re);
 7225  0
                         recover(input,re);
 7226  
                 }
 7227  
                 finally {
 7228  
                         // do for sure before leaving
 7229  40
                         if ( state.backtracking>0 ) { memoize(input, 87, blockStatement_StartIndex); }
 7230  
 
 7231  0
                 }
 7232  40
         }
 7233  
         // $ANTLR end "blockStatement"
 7234  
 
 7235  
 
 7236  
 
 7237  
         // $ANTLR start "localVariableDeclarationStatement"
 7238  
         // org/argouml/language/java/reveng/Java.g:1253:1: localVariableDeclarationStatement : localVariableDeclaration ';' ;
 7239  
         public final void localVariableDeclarationStatement() throws RecognitionException {
 7240  0
                 int localVariableDeclarationStatement_StartIndex = input.index();
 7241  
 
 7242  
                 try {
 7243  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 88) ) { return; }
 7244  
 
 7245  
                         // org/argouml/language/java/reveng/Java.g:1254:5: ( localVariableDeclaration ';' )
 7246  
                         // org/argouml/language/java/reveng/Java.g:1254:10: localVariableDeclaration ';'
 7247  
                         {
 7248  0
                         pushFollow(FOLLOW_localVariableDeclaration_in_localVariableDeclarationStatement5062);
 7249  0
                         localVariableDeclaration();
 7250  0
                         state._fsp--;
 7251  0
                         if (state.failed) return;
 7252  0
                         match(input,50,FOLLOW_50_in_localVariableDeclarationStatement5064); if (state.failed) return;
 7253  
                         }
 7254  
 
 7255  
                 }
 7256  0
                 catch (RecognitionException re) {
 7257  0
                         reportError(re);
 7258  0
                         recover(input,re);
 7259  
                 }
 7260  
                 finally {
 7261  
                         // do for sure before leaving
 7262  0
                         if ( state.backtracking>0 ) { memoize(input, 88, localVariableDeclarationStatement_StartIndex); }
 7263  
 
 7264  0
                 }
 7265  0
         }
 7266  
         // $ANTLR end "localVariableDeclarationStatement"
 7267  
 
 7268  
 
 7269  
 
 7270  
         // $ANTLR start "localVariableDeclaration"
 7271  
         // org/argouml/language/java/reveng/Java.g:1257:1: localVariableDeclaration : variableModifiers t= type variableDeclarators[\"\", (short)0, null] ;
 7272  
         public final void localVariableDeclaration() throws RecognitionException {
 7273  0
                 int localVariableDeclaration_StartIndex = input.index();
 7274  
 
 7275  0
                 String t =null;
 7276  
 
 7277  
                 try {
 7278  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 89) ) { return; }
 7279  
 
 7280  
                         // org/argouml/language/java/reveng/Java.g:1258:5: ( variableModifiers t= type variableDeclarators[\"\", (short)0, null] )
 7281  
                         // org/argouml/language/java/reveng/Java.g:1258:9: variableModifiers t= type variableDeclarators[\"\", (short)0, null]
 7282  
                         {
 7283  0
                         pushFollow(FOLLOW_variableModifiers_in_localVariableDeclaration5083);
 7284  0
                         variableModifiers();
 7285  0
                         state._fsp--;
 7286  0
                         if (state.failed) return;
 7287  0
                         pushFollow(FOLLOW_type_in_localVariableDeclaration5087);
 7288  0
                         t=type();
 7289  0
                         state._fsp--;
 7290  0
                         if (state.failed) return;
 7291  0
                         if ( state.backtracking==0 ) {
 7292  
                                             // simple dependency algorithm: if t is found in the model,
 7293  
                                             // then build a dependency, otherwise ignore
 7294  0
                                     if (parserMode == MODE_IMPORT_PASS2) {
 7295  0
                                         getModeller().addClassifierDependency(t);
 7296  
                                     }
 7297  
                                     }
 7298  0
                         pushFollow(FOLLOW_variableDeclarators_in_localVariableDeclaration5101);
 7299  0
                         variableDeclarators("", (short)0, null);
 7300  0
                         state._fsp--;
 7301  0
                         if (state.failed) return;
 7302  
                         }
 7303  
 
 7304  
                 }
 7305  0
                 catch (RecognitionException re) {
 7306  0
                         reportError(re);
 7307  0
                         recover(input,re);
 7308  
                 }
 7309  
                 finally {
 7310  
                         // do for sure before leaving
 7311  0
                         if ( state.backtracking>0 ) { memoize(input, 89, localVariableDeclaration_StartIndex); }
 7312  
 
 7313  0
                 }
 7314  0
         }
 7315  
         // $ANTLR end "localVariableDeclaration"
 7316  
 
 7317  
 
 7318  
 
 7319  
         // $ANTLR start "variableModifiers"
 7320  
         // org/argouml/language/java/reveng/Java.g:1269:1: variableModifiers returns [short mods = 0] : (m= variableModifier )* ;
 7321  
         public final short variableModifiers() throws RecognitionException {
 7322  44
                 short mods =  0;
 7323  
 
 7324  44
                 int variableModifiers_StartIndex = input.index();
 7325  
 
 7326  44
                 short m =0;
 7327  
 
 7328  
                 try {
 7329  44
                         if ( state.backtracking>0 && alreadyParsedRule(input, 90) ) { return mods; }
 7330  
 
 7331  
                         // org/argouml/language/java/reveng/Java.g:1270:5: ( (m= variableModifier )* )
 7332  
                         // org/argouml/language/java/reveng/Java.g:1270:9: (m= variableModifier )*
 7333  
                         {
 7334  
                         // org/argouml/language/java/reveng/Java.g:1270:9: (m= variableModifier )*
 7335  
                         loop108:
 7336  
                         while (true) {
 7337  48
                                 int alt108=2;
 7338  48
                                 int LA108_0 = input.LA(1);
 7339  48
                                 if ( (LA108_0==56||LA108_0==76) ) {
 7340  4
                                         alt108=1;
 7341  
                                 }
 7342  
 
 7343  48
                                 switch (alt108) {
 7344  
                                 case 1 :
 7345  
                                         // org/argouml/language/java/reveng/Java.g:1270:10: m= variableModifier
 7346  
                                         {
 7347  4
                                         pushFollow(FOLLOW_variableModifier_in_variableModifiers5132);
 7348  4
                                         m=variableModifier();
 7349  4
                                         state._fsp--;
 7350  4
                                         if (state.failed) return mods;
 7351  4
                                         if ( state.backtracking==0 ) { mods |= m; }
 7352  
                                         }
 7353  
                                         break;
 7354  
 
 7355  
                                 default :
 7356  44
                                         break loop108;
 7357  
                                 }
 7358  4
                         }
 7359  
 
 7360  
                         }
 7361  
 
 7362  
                 }
 7363  0
                 catch (RecognitionException re) {
 7364  0
                         reportError(re);
 7365  0
                         recover(input,re);
 7366  
                 }
 7367  
                 finally {
 7368  
                         // do for sure before leaving
 7369  44
                         if ( state.backtracking>0 ) { memoize(input, 90, variableModifiers_StartIndex); }
 7370  
 
 7371  0
                 }
 7372  44
                 return mods;
 7373  
         }
 7374  
         // $ANTLR end "variableModifiers"
 7375  
 
 7376  
 
 7377  
 
 7378  
         // $ANTLR start "statement"
 7379  
         // org/argouml/language/java/reveng/Java.g:1273:1: statement : ( block | ASSERT expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | ';' | statementExpression ';' | Identifier ':' statement );
 7380  
         public final void statement() throws RecognitionException {
 7381  52
                 int statement_StartIndex = input.index();
 7382  
 
 7383  
                 try {
 7384  52
                         if ( state.backtracking>0 && alreadyParsedRule(input, 91) ) { return; }
 7385  
 
 7386  
                         // org/argouml/language/java/reveng/Java.g:1274:5: ( block | ASSERT expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | ';' | statementExpression ';' | Identifier ':' statement )
 7387  52
                         int alt115=16;
 7388  52
                         alt115 = dfa115.predict(input);
 7389  52
                         switch (alt115) {
 7390  
                                 case 1 :
 7391  
                                         // org/argouml/language/java/reveng/Java.g:1274:7: block
 7392  
                                         {
 7393  0
                                         pushFollow(FOLLOW_block_in_statement5154);
 7394  0
                                         block();
 7395  0
                                         state._fsp--;
 7396  0
                                         if (state.failed) return;
 7397  
                                         }
 7398  
                                         break;
 7399  
                                 case 2 :
 7400  
                                         // org/argouml/language/java/reveng/Java.g:1275:9: ASSERT expression ( ':' expression )? ';'
 7401  
                                         {
 7402  0
                                         match(input,ASSERT,FOLLOW_ASSERT_in_statement5164); if (state.failed) return;
 7403  0
                                         pushFollow(FOLLOW_expression_in_statement5166);
 7404  0
                                         expression();
 7405  0
                                         state._fsp--;
 7406  0
                                         if (state.failed) return;
 7407  
                                         // org/argouml/language/java/reveng/Java.g:1275:27: ( ':' expression )?
 7408  0
                                         int alt109=2;
 7409  0
                                         int LA109_0 = input.LA(1);
 7410  0
                                         if ( (LA109_0==49) ) {
 7411  0
                                                 alt109=1;
 7412  
                                         }
 7413  0
                                         switch (alt109) {
 7414  
                                                 case 1 :
 7415  
                                                         // org/argouml/language/java/reveng/Java.g:1275:28: ':' expression
 7416  
                                                         {
 7417  0
                                                         match(input,49,FOLLOW_49_in_statement5169); if (state.failed) return;
 7418  0
                                                         pushFollow(FOLLOW_expression_in_statement5171);
 7419  0
                                                         expression();
 7420  0
                                                         state._fsp--;
 7421  0
                                                         if (state.failed) return;
 7422  
                                                         }
 7423  
                                                         break;
 7424  
 
 7425  
                                         }
 7426  
 
 7427  0
                                         match(input,50,FOLLOW_50_in_statement5175); if (state.failed) return;
 7428  
                                         }
 7429  0
                                         break;
 7430  
                                 case 3 :
 7431  
                                         // org/argouml/language/java/reveng/Java.g:1276:9: 'if' parExpression statement ( options {k=1; } : 'else' statement )?
 7432  
                                         {
 7433  12
                                         match(input,80,FOLLOW_80_in_statement5185); if (state.failed) return;
 7434  12
                                         pushFollow(FOLLOW_parExpression_in_statement5187);
 7435  12
                                         parExpression();
 7436  12
                                         state._fsp--;
 7437  12
                                         if (state.failed) return;
 7438  12
                                         pushFollow(FOLLOW_statement_in_statement5189);
 7439  12
                                         statement();
 7440  12
                                         state._fsp--;
 7441  12
                                         if (state.failed) return;
 7442  
                                         // org/argouml/language/java/reveng/Java.g:1276:38: ( options {k=1; } : 'else' statement )?
 7443  12
                                         int alt110=2;
 7444  12
                                         int LA110_0 = input.LA(1);
 7445  12
                                         if ( (LA110_0==73) ) {
 7446  0
                                                 int LA110_1 = input.LA(2);
 7447  0
                                                 if ( (synpred158_Java()) ) {
 7448  0
                                                         alt110=1;
 7449  
                                                 }
 7450  
                                         }
 7451  12
                                         switch (alt110) {
 7452  
                                                 case 1 :
 7453  
                                                         // org/argouml/language/java/reveng/Java.g:1276:54: 'else' statement
 7454  
                                                         {
 7455  0
                                                         match(input,73,FOLLOW_73_in_statement5199); if (state.failed) return;
 7456  0
                                                         pushFollow(FOLLOW_statement_in_statement5201);
 7457  0
                                                         statement();
 7458  0
                                                         state._fsp--;
 7459  0
                                                         if (state.failed) return;
 7460  
                                                         }
 7461  
                                                         break;
 7462  
 
 7463  
                                         }
 7464  
 
 7465  
                                         }
 7466  12
                                         break;
 7467  
                                 case 4 :
 7468  
                                         // org/argouml/language/java/reveng/Java.g:1277:9: 'for' '(' forControl ')' statement
 7469  
                                         {
 7470  0
                                         match(input,79,FOLLOW_79_in_statement5213); if (state.failed) return;
 7471  0
                                         match(input,34,FOLLOW_34_in_statement5215); if (state.failed) return;
 7472  0
                                         pushFollow(FOLLOW_forControl_in_statement5217);
 7473  0
                                         forControl();
 7474  0
                                         state._fsp--;
 7475  0
                                         if (state.failed) return;
 7476  0
                                         match(input,35,FOLLOW_35_in_statement5219); if (state.failed) return;
 7477  0
                                         pushFollow(FOLLOW_statement_in_statement5221);
 7478  0
                                         statement();
 7479  0
                                         state._fsp--;
 7480  0
                                         if (state.failed) return;
 7481  
                                         }
 7482  
                                         break;
 7483  
                                 case 5 :
 7484  
                                         // org/argouml/language/java/reveng/Java.g:1278:9: 'while' parExpression statement
 7485  
                                         {
 7486  0
                                         match(input,109,FOLLOW_109_in_statement5231); if (state.failed) return;
 7487  0
                                         pushFollow(FOLLOW_parExpression_in_statement5233);
 7488  0
                                         parExpression();
 7489  0
                                         state._fsp--;
 7490  0
                                         if (state.failed) return;
 7491  0
                                         pushFollow(FOLLOW_statement_in_statement5235);
 7492  0
                                         statement();
 7493  0
                                         state._fsp--;
 7494  0
                                         if (state.failed) return;
 7495  
                                         }
 7496  
                                         break;
 7497  
                                 case 6 :
 7498  
                                         // org/argouml/language/java/reveng/Java.g:1279:9: 'do' statement 'while' parExpression ';'
 7499  
                                         {
 7500  0
                                         match(input,71,FOLLOW_71_in_statement5245); if (state.failed) return;
 7501  0
                                         pushFollow(FOLLOW_statement_in_statement5247);
 7502  0
                                         statement();
 7503  0
                                         state._fsp--;
 7504  0
                                         if (state.failed) return;
 7505  0
                                         match(input,109,FOLLOW_109_in_statement5249); if (state.failed) return;
 7506  0
                                         pushFollow(FOLLOW_parExpression_in_statement5251);
 7507  0
                                         parExpression();
 7508  0
                                         state._fsp--;
 7509  0
                                         if (state.failed) return;
 7510  0
                                         match(input,50,FOLLOW_50_in_statement5253); if (state.failed) return;
 7511  
                                         }
 7512  
                                         break;
 7513  
                                 case 7 :
 7514  
                                         // org/argouml/language/java/reveng/Java.g:1280:9: 'try' block ( catches 'finally' block | catches | 'finally' block )
 7515  
                                         {
 7516  0
                                         match(input,106,FOLLOW_106_in_statement5263); if (state.failed) return;
 7517  0
                                         pushFollow(FOLLOW_block_in_statement5265);
 7518  0
                                         block();
 7519  0
                                         state._fsp--;
 7520  0
                                         if (state.failed) return;
 7521  
                                         // org/argouml/language/java/reveng/Java.g:1281:9: ( catches 'finally' block | catches | 'finally' block )
 7522  0
                                         int alt111=3;
 7523  0
                                         int LA111_0 = input.LA(1);
 7524  0
                                         if ( (LA111_0==66) ) {
 7525  0
                                                 int LA111_1 = input.LA(2);
 7526  0
                                                 if ( (LA111_1==34) ) {
 7527  0
                                                         int LA111_3 = input.LA(3);
 7528  0
                                                         if ( (synpred163_Java()) ) {
 7529  0
                                                                 alt111=1;
 7530  
                                                         }
 7531  0
                                                         else if ( (synpred164_Java()) ) {
 7532  0
                                                                 alt111=2;
 7533  
                                                         }
 7534  
 
 7535  
                                                         else {
 7536  0
                                                                 if (state.backtracking>0) {state.failed=true; return;}
 7537  0
                                                                 int nvaeMark = input.mark();
 7538  
                                                                 try {
 7539  0
                                                                         for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
 7540  0
                                                                                 input.consume();
 7541  
                                                                         }
 7542  0
                                                                         NoViableAltException nvae =
 7543  
                                                                                 new NoViableAltException("", 111, 3, input);
 7544  0
                                                                         throw nvae;
 7545  
                                                                 } finally {
 7546  0
                                                                         input.rewind(nvaeMark);
 7547  0
                                                                 }
 7548  
                                                         }
 7549  
 
 7550  0
                                                 }
 7551  
 
 7552  
                                                 else {
 7553  0
                                                         if (state.backtracking>0) {state.failed=true; return;}
 7554  0
                                                         int nvaeMark = input.mark();
 7555  
                                                         try {
 7556  0
                                                                 input.consume();
 7557  0
                                                                 NoViableAltException nvae =
 7558  
                                                                         new NoViableAltException("", 111, 1, input);
 7559  0
                                                                 throw nvae;
 7560  
                                                         } finally {
 7561  0
                                                                 input.rewind(nvaeMark);
 7562  0
                                                         }
 7563  
                                                 }
 7564  
 
 7565  0
                                         }
 7566  0
                                         else if ( (LA111_0==77) ) {
 7567  0
                                                 alt111=3;
 7568  
                                         }
 7569  
 
 7570  
                                         else {
 7571  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 7572  0
                                                 NoViableAltException nvae =
 7573  
                                                         new NoViableAltException("", 111, 0, input);
 7574  0
                                                 throw nvae;
 7575  
                                         }
 7576  
 
 7577  0
                                         switch (alt111) {
 7578  
                                                 case 1 :
 7579  
                                                         // org/argouml/language/java/reveng/Java.g:1281:11: catches 'finally' block
 7580  
                                                         {
 7581  0
                                                         pushFollow(FOLLOW_catches_in_statement5277);
 7582  0
                                                         catches();
 7583  0
                                                         state._fsp--;
 7584  0
                                                         if (state.failed) return;
 7585  0
                                                         match(input,77,FOLLOW_77_in_statement5279); if (state.failed) return;
 7586  0
                                                         pushFollow(FOLLOW_block_in_statement5281);
 7587  0
                                                         block();
 7588  0
                                                         state._fsp--;
 7589  0
                                                         if (state.failed) return;
 7590  
                                                         }
 7591  
                                                         break;
 7592  
                                                 case 2 :
 7593  
                                                         // org/argouml/language/java/reveng/Java.g:1282:11: catches
 7594  
                                                         {
 7595  0
                                                         pushFollow(FOLLOW_catches_in_statement5293);
 7596  0
                                                         catches();
 7597  0
                                                         state._fsp--;
 7598  0
                                                         if (state.failed) return;
 7599  
                                                         }
 7600  
                                                         break;
 7601  
                                                 case 3 :
 7602  
                                                         // org/argouml/language/java/reveng/Java.g:1283:13: 'finally' block
 7603  
                                                         {
 7604  0
                                                         match(input,77,FOLLOW_77_in_statement5307); if (state.failed) return;
 7605  0
                                                         pushFollow(FOLLOW_block_in_statement5309);
 7606  0
                                                         block();
 7607  0
                                                         state._fsp--;
 7608  0
                                                         if (state.failed) return;
 7609  
                                                         }
 7610  
                                                         break;
 7611  
 
 7612  
                                         }
 7613  
 
 7614  
                                         }
 7615  0
                                         break;
 7616  
                                 case 8 :
 7617  
                                         // org/argouml/language/java/reveng/Java.g:1285:9: 'switch' parExpression '{' switchBlockStatementGroups '}'
 7618  
                                         {
 7619  2
                                         match(input,99,FOLLOW_99_in_statement5329); if (state.failed) return;
 7620  2
                                         pushFollow(FOLLOW_parExpression_in_statement5331);
 7621  2
                                         parExpression();
 7622  2
                                         state._fsp--;
 7623  2
                                         if (state.failed) return;
 7624  2
                                         match(input,110,FOLLOW_110_in_statement5333); if (state.failed) return;
 7625  2
                                         pushFollow(FOLLOW_switchBlockStatementGroups_in_statement5335);
 7626  2
                                         switchBlockStatementGroups();
 7627  2
                                         state._fsp--;
 7628  2
                                         if (state.failed) return;
 7629  2
                                         match(input,114,FOLLOW_114_in_statement5337); if (state.failed) return;
 7630  
                                         }
 7631  
                                         break;
 7632  
                                 case 9 :
 7633  
                                         // org/argouml/language/java/reveng/Java.g:1286:9: 'synchronized' parExpression block
 7634  
                                         {
 7635  0
                                         match(input,100,FOLLOW_100_in_statement5347); if (state.failed) return;
 7636  0
                                         pushFollow(FOLLOW_parExpression_in_statement5349);
 7637  0
                                         parExpression();
 7638  0
                                         state._fsp--;
 7639  0
                                         if (state.failed) return;
 7640  0
                                         pushFollow(FOLLOW_block_in_statement5351);
 7641  0
                                         block();
 7642  0
                                         state._fsp--;
 7643  0
                                         if (state.failed) return;
 7644  
                                         }
 7645  
                                         break;
 7646  
                                 case 10 :
 7647  
                                         // org/argouml/language/java/reveng/Java.g:1287:9: 'return' ( expression )? ';'
 7648  
                                         {
 7649  15
                                         match(input,94,FOLLOW_94_in_statement5361); if (state.failed) return;
 7650  
                                         // org/argouml/language/java/reveng/Java.g:1287:18: ( expression )?
 7651  15
                                         int alt112=2;
 7652  15
                                         int LA112_0 = input.LA(1);
 7653  15
                                         if ( ((LA112_0 >= CharacterLiteral && LA112_0 <= DecimalLiteral)||LA112_0==FloatingPointLiteral||(LA112_0 >= HexLiteral && LA112_0 <= Identifier)||(LA112_0 >= OctalLiteral && LA112_0 <= StringLiteral)||LA112_0==27||LA112_0==34||(LA112_0 >= 38 && LA112_0 <= 39)||(LA112_0 >= 42 && LA112_0 <= 43)||LA112_0==62||LA112_0==64||LA112_0==67||LA112_0==72||LA112_0==75||LA112_0==78||LA112_0==84||LA112_0==86||(LA112_0 >= 88 && LA112_0 <= 89)||LA112_0==95||LA112_0==98||LA112_0==101||LA112_0==105||LA112_0==107||LA112_0==115) ) {
 7654  15
                                                 alt112=1;
 7655  
                                         }
 7656  15
                                         switch (alt112) {
 7657  
                                                 case 1 :
 7658  
                                                         // org/argouml/language/java/reveng/Java.g:1287:18: expression
 7659  
                                                         {
 7660  15
                                                         pushFollow(FOLLOW_expression_in_statement5363);
 7661  15
                                                         expression();
 7662  15
                                                         state._fsp--;
 7663  15
                                                         if (state.failed) return;
 7664  
                                                         }
 7665  
                                                         break;
 7666  
 
 7667  
                                         }
 7668  
 
 7669  15
                                         match(input,50,FOLLOW_50_in_statement5366); if (state.failed) return;
 7670  
                                         }
 7671  15
                                         break;
 7672  
                                 case 11 :
 7673  
                                         // org/argouml/language/java/reveng/Java.g:1288:9: 'throw' expression ';'
 7674  
                                         {
 7675  2
                                         match(input,102,FOLLOW_102_in_statement5376); if (state.failed) return;
 7676  2
                                         pushFollow(FOLLOW_expression_in_statement5378);
 7677  2
                                         expression();
 7678  2
                                         state._fsp--;
 7679  2
                                         if (state.failed) return;
 7680  2
                                         match(input,50,FOLLOW_50_in_statement5380); if (state.failed) return;
 7681  
                                         }
 7682  
                                         break;
 7683  
                                 case 12 :
 7684  
                                         // org/argouml/language/java/reveng/Java.g:1289:9: 'break' ( Identifier )? ';'
 7685  
                                         {
 7686  0
                                         match(input,63,FOLLOW_63_in_statement5390); if (state.failed) return;
 7687  
                                         // org/argouml/language/java/reveng/Java.g:1289:17: ( Identifier )?
 7688  0
                                         int alt113=2;
 7689  0
                                         int LA113_0 = input.LA(1);
 7690  0
                                         if ( (LA113_0==Identifier) ) {
 7691  0
                                                 alt113=1;
 7692  
                                         }
 7693  0
                                         switch (alt113) {
 7694  
                                                 case 1 :
 7695  
                                                         // org/argouml/language/java/reveng/Java.g:1289:17: Identifier
 7696  
                                                         {
 7697  0
                                                         match(input,Identifier,FOLLOW_Identifier_in_statement5392); if (state.failed) return;
 7698  
                                                         }
 7699  
                                                         break;
 7700  
 
 7701  
                                         }
 7702  
 
 7703  0
                                         match(input,50,FOLLOW_50_in_statement5395); if (state.failed) return;
 7704  
                                         }
 7705  0
                                         break;
 7706  
                                 case 13 :
 7707  
                                         // org/argouml/language/java/reveng/Java.g:1290:9: 'continue' ( Identifier )? ';'
 7708  
                                         {
 7709  0
                                         match(input,69,FOLLOW_69_in_statement5405); if (state.failed) return;
 7710  
                                         // org/argouml/language/java/reveng/Java.g:1290:20: ( Identifier )?
 7711  0
                                         int alt114=2;
 7712  0
                                         int LA114_0 = input.LA(1);
 7713  0
                                         if ( (LA114_0==Identifier) ) {
 7714  0
                                                 alt114=1;
 7715  
                                         }
 7716  0
                                         switch (alt114) {
 7717  
                                                 case 1 :
 7718  
                                                         // org/argouml/language/java/reveng/Java.g:1290:20: Identifier
 7719  
                                                         {
 7720  0
                                                         match(input,Identifier,FOLLOW_Identifier_in_statement5407); if (state.failed) return;
 7721  
                                                         }
 7722  
                                                         break;
 7723  
 
 7724  
                                         }
 7725  
 
 7726  0
                                         match(input,50,FOLLOW_50_in_statement5410); if (state.failed) return;
 7727  
                                         }
 7728  0
                                         break;
 7729  
                                 case 14 :
 7730  
                                         // org/argouml/language/java/reveng/Java.g:1291:9: ';'
 7731  
                                         {
 7732  0
                                         match(input,50,FOLLOW_50_in_statement5420); if (state.failed) return;
 7733  
                                         }
 7734  
                                         break;
 7735  
                                 case 15 :
 7736  
                                         // org/argouml/language/java/reveng/Java.g:1292:9: statementExpression ';'
 7737  
                                         {
 7738  21
                                         pushFollow(FOLLOW_statementExpression_in_statement5431);
 7739  21
                                         statementExpression();
 7740  21
                                         state._fsp--;
 7741  21
                                         if (state.failed) return;
 7742  21
                                         match(input,50,FOLLOW_50_in_statement5433); if (state.failed) return;
 7743  
                                         }
 7744  
                                         break;
 7745  
                                 case 16 :
 7746  
                                         // org/argouml/language/java/reveng/Java.g:1293:9: Identifier ':' statement
 7747  
                                         {
 7748  0
                                         match(input,Identifier,FOLLOW_Identifier_in_statement5443); if (state.failed) return;
 7749  0
                                         match(input,49,FOLLOW_49_in_statement5445); if (state.failed) return;
 7750  0
                                         pushFollow(FOLLOW_statement_in_statement5447);
 7751  0
                                         statement();
 7752  0
                                         state._fsp--;
 7753  0
                                         if (state.failed) return;
 7754  
                                         }
 7755  
                                         break;
 7756  
 
 7757  
                         }
 7758  
                 }
 7759  0
                 catch (RecognitionException re) {
 7760  0
                         reportError(re);
 7761  0
                         recover(input,re);
 7762  
                 }
 7763  
                 finally {
 7764  
                         // do for sure before leaving
 7765  52
                         if ( state.backtracking>0 ) { memoize(input, 91, statement_StartIndex); }
 7766  
 
 7767  0
                 }
 7768  52
         }
 7769  
         // $ANTLR end "statement"
 7770  
 
 7771  
 
 7772  
 
 7773  
         // $ANTLR start "catches"
 7774  
         // org/argouml/language/java/reveng/Java.g:1296:1: catches : catchClause ( catchClause )* ;
 7775  
         public final void catches() throws RecognitionException {
 7776  0
                 int catches_StartIndex = input.index();
 7777  
 
 7778  
                 try {
 7779  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 92) ) { return; }
 7780  
 
 7781  
                         // org/argouml/language/java/reveng/Java.g:1297:5: ( catchClause ( catchClause )* )
 7782  
                         // org/argouml/language/java/reveng/Java.g:1297:9: catchClause ( catchClause )*
 7783  
                         {
 7784  0
                         pushFollow(FOLLOW_catchClause_in_catches5470);
 7785  0
                         catchClause();
 7786  0
                         state._fsp--;
 7787  0
                         if (state.failed) return;
 7788  
                         // org/argouml/language/java/reveng/Java.g:1297:21: ( catchClause )*
 7789  
                         loop116:
 7790  
                         while (true) {
 7791  0
                                 int alt116=2;
 7792  0
                                 int LA116_0 = input.LA(1);
 7793  0
                                 if ( (LA116_0==66) ) {
 7794  0
                                         alt116=1;
 7795  
                                 }
 7796  
 
 7797  0
                                 switch (alt116) {
 7798  
                                 case 1 :
 7799  
                                         // org/argouml/language/java/reveng/Java.g:1297:22: catchClause
 7800  
                                         {
 7801  0
                                         pushFollow(FOLLOW_catchClause_in_catches5473);
 7802  0
                                         catchClause();
 7803  0
                                         state._fsp--;
 7804  0
                                         if (state.failed) return;
 7805  
                                         }
 7806  
                                         break;
 7807  
 
 7808  
                                 default :
 7809  0
                                         break loop116;
 7810  
                                 }
 7811  0
                         }
 7812  
 
 7813  
                         }
 7814  
 
 7815  
                 }
 7816  0
                 catch (RecognitionException re) {
 7817  0
                         reportError(re);
 7818  0
                         recover(input,re);
 7819  
                 }
 7820  
                 finally {
 7821  
                         // do for sure before leaving
 7822  0
                         if ( state.backtracking>0 ) { memoize(input, 92, catches_StartIndex); }
 7823  
 
 7824  0
                 }
 7825  0
         }
 7826  
         // $ANTLR end "catches"
 7827  
 
 7828  
 
 7829  
 
 7830  
         // $ANTLR start "catchClause"
 7831  
         // org/argouml/language/java/reveng/Java.g:1300:1: catchClause : 'catch' '(' formalParameter ')' block ;
 7832  
         public final void catchClause() throws RecognitionException {
 7833  0
                 int catchClause_StartIndex = input.index();
 7834  
 
 7835  
                 try {
 7836  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 93) ) { return; }
 7837  
 
 7838  
                         // org/argouml/language/java/reveng/Java.g:1301:5: ( 'catch' '(' formalParameter ')' block )
 7839  
                         // org/argouml/language/java/reveng/Java.g:1301:9: 'catch' '(' formalParameter ')' block
 7840  
                         {
 7841  0
                         match(input,66,FOLLOW_66_in_catchClause5498); if (state.failed) return;
 7842  0
                         match(input,34,FOLLOW_34_in_catchClause5500); if (state.failed) return;
 7843  0
                         pushFollow(FOLLOW_formalParameter_in_catchClause5502);
 7844  0
                         formalParameter();
 7845  0
                         state._fsp--;
 7846  0
                         if (state.failed) return;
 7847  0
                         match(input,35,FOLLOW_35_in_catchClause5504); if (state.failed) return;
 7848  0
                         pushFollow(FOLLOW_block_in_catchClause5506);
 7849  0
                         block();
 7850  0
                         state._fsp--;
 7851  0
                         if (state.failed) return;
 7852  
                         }
 7853  
 
 7854  
                 }
 7855  0
                 catch (RecognitionException re) {
 7856  0
                         reportError(re);
 7857  0
                         recover(input,re);
 7858  
                 }
 7859  
                 finally {
 7860  
                         // do for sure before leaving
 7861  0
                         if ( state.backtracking>0 ) { memoize(input, 93, catchClause_StartIndex); }
 7862  
 
 7863  0
                 }
 7864  0
         }
 7865  
         // $ANTLR end "catchClause"
 7866  
 
 7867  
 
 7868  
 
 7869  
         // $ANTLR start "formalParameter"
 7870  
         // org/argouml/language/java/reveng/Java.g:1304:1: formalParameter : variableModifiers type variableDeclaratorId ;
 7871  
         public final void formalParameter() throws RecognitionException {
 7872  0
                 int formalParameter_StartIndex = input.index();
 7873  
 
 7874  
                 try {
 7875  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 94) ) { return; }
 7876  
 
 7877  
                         // org/argouml/language/java/reveng/Java.g:1305:5: ( variableModifiers type variableDeclaratorId )
 7878  
                         // org/argouml/language/java/reveng/Java.g:1305:9: variableModifiers type variableDeclaratorId
 7879  
                         {
 7880  0
                         pushFollow(FOLLOW_variableModifiers_in_formalParameter5525);
 7881  0
                         variableModifiers();
 7882  0
                         state._fsp--;
 7883  0
                         if (state.failed) return;
 7884  0
                         pushFollow(FOLLOW_type_in_formalParameter5527);
 7885  0
                         type();
 7886  0
                         state._fsp--;
 7887  0
                         if (state.failed) return;
 7888  0
                         pushFollow(FOLLOW_variableDeclaratorId_in_formalParameter5529);
 7889  0
                         variableDeclaratorId();
 7890  0
                         state._fsp--;
 7891  0
                         if (state.failed) return;
 7892  
                         }
 7893  
 
 7894  
                 }
 7895  0
                 catch (RecognitionException re) {
 7896  0
                         reportError(re);
 7897  0
                         recover(input,re);
 7898  
                 }
 7899  
                 finally {
 7900  
                         // do for sure before leaving
 7901  0
                         if ( state.backtracking>0 ) { memoize(input, 94, formalParameter_StartIndex); }
 7902  
 
 7903  0
                 }
 7904  0
         }
 7905  
         // $ANTLR end "formalParameter"
 7906  
 
 7907  
 
 7908  
 
 7909  
         // $ANTLR start "switchBlockStatementGroups"
 7910  
         // org/argouml/language/java/reveng/Java.g:1308:1: switchBlockStatementGroups : ( switchBlockStatementGroup )* ;
 7911  
         public final void switchBlockStatementGroups() throws RecognitionException {
 7912  2
                 int switchBlockStatementGroups_StartIndex = input.index();
 7913  
 
 7914  
                 try {
 7915  2
                         if ( state.backtracking>0 && alreadyParsedRule(input, 95) ) { return; }
 7916  
 
 7917  
                         // org/argouml/language/java/reveng/Java.g:1309:5: ( ( switchBlockStatementGroup )* )
 7918  
                         // org/argouml/language/java/reveng/Java.g:1309:9: ( switchBlockStatementGroup )*
 7919  
                         {
 7920  
                         // org/argouml/language/java/reveng/Java.g:1309:9: ( switchBlockStatementGroup )*
 7921  
                         loop117:
 7922  
                         while (true) {
 7923  10
                                 int alt117=2;
 7924  10
                                 int LA117_0 = input.LA(1);
 7925  10
                                 if ( (LA117_0==65||LA117_0==70) ) {
 7926  8
                                         alt117=1;
 7927  
                                 }
 7928  
 
 7929  10
                                 switch (alt117) {
 7930  
                                 case 1 :
 7931  
                                         // org/argouml/language/java/reveng/Java.g:1309:10: switchBlockStatementGroup
 7932  
                                         {
 7933  8
                                         pushFollow(FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups5557);
 7934  8
                                         switchBlockStatementGroup();
 7935  8
                                         state._fsp--;
 7936  8
                                         if (state.failed) return;
 7937  
                                         }
 7938  
                                         break;
 7939  
 
 7940  
                                 default :
 7941  2
                                         break loop117;
 7942  
                                 }
 7943  8
                         }
 7944  
 
 7945  
                         }
 7946  
 
 7947  
                 }
 7948  0
                 catch (RecognitionException re) {
 7949  0
                         reportError(re);
 7950  0
                         recover(input,re);
 7951  
                 }
 7952  
                 finally {
 7953  
                         // do for sure before leaving
 7954  2
                         if ( state.backtracking>0 ) { memoize(input, 95, switchBlockStatementGroups_StartIndex); }
 7955  
 
 7956  0
                 }
 7957  2
         }
 7958  
         // $ANTLR end "switchBlockStatementGroups"
 7959  
 
 7960  
 
 7961  
 
 7962  
         // $ANTLR start "switchBlockStatementGroup"
 7963  
         // org/argouml/language/java/reveng/Java.g:1316:1: switchBlockStatementGroup : ( switchLabel )+ ( blockStatement )* ;
 7964  
         public final void switchBlockStatementGroup() throws RecognitionException {
 7965  8
                 int switchBlockStatementGroup_StartIndex = input.index();
 7966  
 
 7967  
                 try {
 7968  8
                         if ( state.backtracking>0 && alreadyParsedRule(input, 96) ) { return; }
 7969  
 
 7970  
                         // org/argouml/language/java/reveng/Java.g:1317:5: ( ( switchLabel )+ ( blockStatement )* )
 7971  
                         // org/argouml/language/java/reveng/Java.g:1317:9: ( switchLabel )+ ( blockStatement )*
 7972  
                         {
 7973  
                         // org/argouml/language/java/reveng/Java.g:1317:9: ( switchLabel )+
 7974  8
                         int cnt118=0;
 7975  
                         loop118:
 7976  
                         while (true) {
 7977  16
                                 int alt118=2;
 7978  16
                                 alt118 = dfa118.predict(input);
 7979  16
                                 switch (alt118) {
 7980  
                                 case 1 :
 7981  
                                         // org/argouml/language/java/reveng/Java.g:1317:9: switchLabel
 7982  
                                         {
 7983  8
                                         pushFollow(FOLLOW_switchLabel_in_switchBlockStatementGroup5584);
 7984  8
                                         switchLabel();
 7985  8
                                         state._fsp--;
 7986  8
                                         if (state.failed) return;
 7987  
                                         }
 7988  
                                         break;
 7989  
 
 7990  
                                 default :
 7991  8
                                         if ( cnt118 >= 1 ) break loop118;
 7992  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 7993  0
                                         EarlyExitException eee = new EarlyExitException(118, input);
 7994  0
                                         throw eee;
 7995  
                                 }
 7996  8
                                 cnt118++;
 7997  8
                         }
 7998  
 
 7999  
                         // org/argouml/language/java/reveng/Java.g:1317:22: ( blockStatement )*
 8000  
                         loop119:
 8001  
                         while (true) {
 8002  16
                                 int alt119=2;
 8003  16
                                 int LA119_0 = input.LA(1);
 8004  16
                                 if ( (LA119_0==ASSERT||(LA119_0 >= CharacterLiteral && LA119_0 <= DecimalLiteral)||LA119_0==ENUM||LA119_0==FloatingPointLiteral||(LA119_0 >= HexLiteral && LA119_0 <= Identifier)||(LA119_0 >= OctalLiteral && LA119_0 <= StringLiteral)||LA119_0==27||LA119_0==34||(LA119_0 >= 38 && LA119_0 <= 39)||(LA119_0 >= 42 && LA119_0 <= 43)||LA119_0==50||LA119_0==56||(LA119_0 >= 61 && LA119_0 <= 64)||(LA119_0 >= 67 && LA119_0 <= 69)||(LA119_0 >= 71 && LA119_0 <= 72)||(LA119_0 >= 75 && LA119_0 <= 76)||(LA119_0 >= 78 && LA119_0 <= 80)||(LA119_0 >= 84 && LA119_0 <= 86)||(LA119_0 >= 88 && LA119_0 <= 89)||(LA119_0 >= 91 && LA119_0 <= 102)||(LA119_0 >= 105 && LA119_0 <= 107)||(LA119_0 >= 109 && LA119_0 <= 110)||LA119_0==115) ) {
 8005  8
                                         alt119=1;
 8006  
                                 }
 8007  
 
 8008  16
                                 switch (alt119) {
 8009  
                                 case 1 :
 8010  
                                         // org/argouml/language/java/reveng/Java.g:1317:22: blockStatement
 8011  
                                         {
 8012  8
                                         pushFollow(FOLLOW_blockStatement_in_switchBlockStatementGroup5587);
 8013  8
                                         blockStatement();
 8014  8
                                         state._fsp--;
 8015  8
                                         if (state.failed) return;
 8016  
                                         }
 8017  
                                         break;
 8018  
 
 8019  
                                 default :
 8020  8
                                         break loop119;
 8021  
                                 }
 8022  8
                         }
 8023  
 
 8024  
                         }
 8025  
 
 8026  
                 }
 8027  0
                 catch (RecognitionException re) {
 8028  0
                         reportError(re);
 8029  0
                         recover(input,re);
 8030  
                 }
 8031  
                 finally {
 8032  
                         // do for sure before leaving
 8033  8
                         if ( state.backtracking>0 ) { memoize(input, 96, switchBlockStatementGroup_StartIndex); }
 8034  
 
 8035  0
                 }
 8036  8
         }
 8037  
         // $ANTLR end "switchBlockStatementGroup"
 8038  
 
 8039  
 
 8040  
 
 8041  
         // $ANTLR start "switchLabel"
 8042  
         // org/argouml/language/java/reveng/Java.g:1320:1: switchLabel : ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' );
 8043  
         public final void switchLabel() throws RecognitionException {
 8044  16
                 int switchLabel_StartIndex = input.index();
 8045  
 
 8046  
                 try {
 8047  16
                         if ( state.backtracking>0 && alreadyParsedRule(input, 97) ) { return; }
 8048  
 
 8049  
                         // org/argouml/language/java/reveng/Java.g:1321:5: ( 'case' constantExpression ':' | 'case' enumConstantName ':' | 'default' ':' )
 8050  16
                         int alt120=3;
 8051  16
                         int LA120_0 = input.LA(1);
 8052  16
                         if ( (LA120_0==65) ) {
 8053  12
                                 int LA120_1 = input.LA(2);
 8054  12
                                 if ( ((LA120_1 >= CharacterLiteral && LA120_1 <= DecimalLiteral)||LA120_1==FloatingPointLiteral||LA120_1==HexLiteral||(LA120_1 >= OctalLiteral && LA120_1 <= StringLiteral)||LA120_1==27||LA120_1==34||(LA120_1 >= 38 && LA120_1 <= 39)||(LA120_1 >= 42 && LA120_1 <= 43)||LA120_1==62||LA120_1==64||LA120_1==67||LA120_1==72||LA120_1==75||LA120_1==78||LA120_1==84||LA120_1==86||(LA120_1 >= 88 && LA120_1 <= 89)||LA120_1==95||LA120_1==98||LA120_1==101||LA120_1==105||LA120_1==107||LA120_1==115) ) {
 8055  12
                                         alt120=1;
 8056  
                                 }
 8057  0
                                 else if ( (LA120_1==Identifier) ) {
 8058  0
                                         int LA120_19 = input.LA(3);
 8059  0
                                         if ( (synpred181_Java()) ) {
 8060  0
                                                 alt120=1;
 8061  
                                         }
 8062  0
                                         else if ( (synpred182_Java()) ) {
 8063  0
                                                 alt120=2;
 8064  
                                         }
 8065  
 
 8066  
                                         else {
 8067  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 8068  0
                                                 int nvaeMark = input.mark();
 8069  
                                                 try {
 8070  0
                                                         for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
 8071  0
                                                                 input.consume();
 8072  
                                                         }
 8073  0
                                                         NoViableAltException nvae =
 8074  
                                                                 new NoViableAltException("", 120, 19, input);
 8075  0
                                                         throw nvae;
 8076  
                                                 } finally {
 8077  0
                                                         input.rewind(nvaeMark);
 8078  0
                                                 }
 8079  
                                         }
 8080  
 
 8081  0
                                 }
 8082  
 
 8083  
                                 else {
 8084  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 8085  0
                                         int nvaeMark = input.mark();
 8086  
                                         try {
 8087  0
                                                 input.consume();
 8088  0
                                                 NoViableAltException nvae =
 8089  
                                                         new NoViableAltException("", 120, 1, input);
 8090  0
                                                 throw nvae;
 8091  
                                         } finally {
 8092  0
                                                 input.rewind(nvaeMark);
 8093  0
                                         }
 8094  
                                 }
 8095  
 
 8096  12
                         }
 8097  4
                         else if ( (LA120_0==70) ) {
 8098  4
                                 alt120=3;
 8099  
                         }
 8100  
 
 8101  
                         else {
 8102  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 8103  0
                                 NoViableAltException nvae =
 8104  
                                         new NoViableAltException("", 120, 0, input);
 8105  0
                                 throw nvae;
 8106  
                         }
 8107  
 
 8108  16
                         switch (alt120) {
 8109  
                                 case 1 :
 8110  
                                         // org/argouml/language/java/reveng/Java.g:1321:9: 'case' constantExpression ':'
 8111  
                                         {
 8112  12
                                         match(input,65,FOLLOW_65_in_switchLabel5611); if (state.failed) return;
 8113  12
                                         pushFollow(FOLLOW_constantExpression_in_switchLabel5613);
 8114  12
                                         constantExpression();
 8115  12
                                         state._fsp--;
 8116  12
                                         if (state.failed) return;
 8117  12
                                         match(input,49,FOLLOW_49_in_switchLabel5615); if (state.failed) return;
 8118  
                                         }
 8119  
                                         break;
 8120  
                                 case 2 :
 8121  
                                         // org/argouml/language/java/reveng/Java.g:1322:9: 'case' enumConstantName ':'
 8122  
                                         {
 8123  0
                                         match(input,65,FOLLOW_65_in_switchLabel5625); if (state.failed) return;
 8124  0
                                         pushFollow(FOLLOW_enumConstantName_in_switchLabel5627);
 8125  0
                                         enumConstantName();
 8126  0
                                         state._fsp--;
 8127  0
                                         if (state.failed) return;
 8128  0
                                         match(input,49,FOLLOW_49_in_switchLabel5629); if (state.failed) return;
 8129  
                                         }
 8130  
                                         break;
 8131  
                                 case 3 :
 8132  
                                         // org/argouml/language/java/reveng/Java.g:1323:9: 'default' ':'
 8133  
                                         {
 8134  4
                                         match(input,70,FOLLOW_70_in_switchLabel5639); if (state.failed) return;
 8135  4
                                         match(input,49,FOLLOW_49_in_switchLabel5641); if (state.failed) return;
 8136  
                                         }
 8137  
                                         break;
 8138  
 
 8139  
                         }
 8140  
                 }
 8141  0
                 catch (RecognitionException re) {
 8142  0
                         reportError(re);
 8143  0
                         recover(input,re);
 8144  
                 }
 8145  
                 finally {
 8146  
                         // do for sure before leaving
 8147  16
                         if ( state.backtracking>0 ) { memoize(input, 97, switchLabel_StartIndex); }
 8148  
 
 8149  0
                 }
 8150  16
         }
 8151  
         // $ANTLR end "switchLabel"
 8152  
 
 8153  
 
 8154  
 
 8155  
         // $ANTLR start "forControl"
 8156  
         // org/argouml/language/java/reveng/Java.g:1326:1: forControl options {k=3; } : ( enhancedForControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );
 8157  
         public final void forControl() throws RecognitionException {
 8158  0
                 int forControl_StartIndex = input.index();
 8159  
 
 8160  
                 try {
 8161  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 98) ) { return; }
 8162  
 
 8163  
                         // org/argouml/language/java/reveng/Java.g:1328:5: ( enhancedForControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? )
 8164  0
                         int alt124=2;
 8165  0
                         alt124 = dfa124.predict(input);
 8166  0
                         switch (alt124) {
 8167  
                                 case 1 :
 8168  
                                         // org/argouml/language/java/reveng/Java.g:1328:9: enhancedForControl
 8169  
                                         {
 8170  0
                                         pushFollow(FOLLOW_enhancedForControl_in_forControl5672);
 8171  0
                                         enhancedForControl();
 8172  0
                                         state._fsp--;
 8173  0
                                         if (state.failed) return;
 8174  
                                         }
 8175  
                                         break;
 8176  
                                 case 2 :
 8177  
                                         // org/argouml/language/java/reveng/Java.g:1329:9: ( forInit )? ';' ( expression )? ';' ( forUpdate )?
 8178  
                                         {
 8179  
                                         // org/argouml/language/java/reveng/Java.g:1329:9: ( forInit )?
 8180  0
                                         int alt121=2;
 8181  0
                                         int LA121_0 = input.LA(1);
 8182  0
                                         if ( ((LA121_0 >= CharacterLiteral && LA121_0 <= DecimalLiteral)||LA121_0==FloatingPointLiteral||(LA121_0 >= HexLiteral && LA121_0 <= Identifier)||(LA121_0 >= OctalLiteral && LA121_0 <= StringLiteral)||LA121_0==27||LA121_0==34||(LA121_0 >= 38 && LA121_0 <= 39)||(LA121_0 >= 42 && LA121_0 <= 43)||LA121_0==56||LA121_0==62||LA121_0==64||LA121_0==67||LA121_0==72||(LA121_0 >= 75 && LA121_0 <= 76)||LA121_0==78||LA121_0==84||LA121_0==86||(LA121_0 >= 88 && LA121_0 <= 89)||LA121_0==95||LA121_0==98||LA121_0==101||LA121_0==105||LA121_0==107||LA121_0==115) ) {
 8183  0
                                                 alt121=1;
 8184  
                                         }
 8185  0
                                         switch (alt121) {
 8186  
                                                 case 1 :
 8187  
                                                         // org/argouml/language/java/reveng/Java.g:1329:9: forInit
 8188  
                                                         {
 8189  0
                                                         pushFollow(FOLLOW_forInit_in_forControl5682);
 8190  0
                                                         forInit();
 8191  0
                                                         state._fsp--;
 8192  0
                                                         if (state.failed) return;
 8193  
                                                         }
 8194  
                                                         break;
 8195  
 
 8196  
                                         }
 8197  
 
 8198  0
                                         match(input,50,FOLLOW_50_in_forControl5685); if (state.failed) return;
 8199  
                                         // org/argouml/language/java/reveng/Java.g:1329:22: ( expression )?
 8200  0
                                         int alt122=2;
 8201  0
                                         int LA122_0 = input.LA(1);
 8202  0
                                         if ( ((LA122_0 >= CharacterLiteral && LA122_0 <= DecimalLiteral)||LA122_0==FloatingPointLiteral||(LA122_0 >= HexLiteral && LA122_0 <= Identifier)||(LA122_0 >= OctalLiteral && LA122_0 <= StringLiteral)||LA122_0==27||LA122_0==34||(LA122_0 >= 38 && LA122_0 <= 39)||(LA122_0 >= 42 && LA122_0 <= 43)||LA122_0==62||LA122_0==64||LA122_0==67||LA122_0==72||LA122_0==75||LA122_0==78||LA122_0==84||LA122_0==86||(LA122_0 >= 88 && LA122_0 <= 89)||LA122_0==95||LA122_0==98||LA122_0==101||LA122_0==105||LA122_0==107||LA122_0==115) ) {
 8203  0
                                                 alt122=1;
 8204  
                                         }
 8205  0
                                         switch (alt122) {
 8206  
                                                 case 1 :
 8207  
                                                         // org/argouml/language/java/reveng/Java.g:1329:22: expression
 8208  
                                                         {
 8209  0
                                                         pushFollow(FOLLOW_expression_in_forControl5687);
 8210  0
                                                         expression();
 8211  0
                                                         state._fsp--;
 8212  0
                                                         if (state.failed) return;
 8213  
                                                         }
 8214  
                                                         break;
 8215  
 
 8216  
                                         }
 8217  
 
 8218  0
                                         match(input,50,FOLLOW_50_in_forControl5690); if (state.failed) return;
 8219  
                                         // org/argouml/language/java/reveng/Java.g:1329:38: ( forUpdate )?
 8220  0
                                         int alt123=2;
 8221  0
                                         int LA123_0 = input.LA(1);
 8222  0
                                         if ( ((LA123_0 >= CharacterLiteral && LA123_0 <= DecimalLiteral)||LA123_0==FloatingPointLiteral||(LA123_0 >= HexLiteral && LA123_0 <= Identifier)||(LA123_0 >= OctalLiteral && LA123_0 <= StringLiteral)||LA123_0==27||LA123_0==34||(LA123_0 >= 38 && LA123_0 <= 39)||(LA123_0 >= 42 && LA123_0 <= 43)||LA123_0==62||LA123_0==64||LA123_0==67||LA123_0==72||LA123_0==75||LA123_0==78||LA123_0==84||LA123_0==86||(LA123_0 >= 88 && LA123_0 <= 89)||LA123_0==95||LA123_0==98||LA123_0==101||LA123_0==105||LA123_0==107||LA123_0==115) ) {
 8223  0
                                                 alt123=1;
 8224  
                                         }
 8225  0
                                         switch (alt123) {
 8226  
                                                 case 1 :
 8227  
                                                         // org/argouml/language/java/reveng/Java.g:1329:38: forUpdate
 8228  
                                                         {
 8229  0
                                                         pushFollow(FOLLOW_forUpdate_in_forControl5692);
 8230  0
                                                         forUpdate();
 8231  0
                                                         state._fsp--;
 8232  0
                                                         if (state.failed) return;
 8233  
                                                         }
 8234  
                                                         break;
 8235  
 
 8236  
                                         }
 8237  
 
 8238  
                                         }
 8239  
                                         break;
 8240  
 
 8241  
                         }
 8242  
                 }
 8243  0
                 catch (RecognitionException re) {
 8244  0
                         reportError(re);
 8245  0
                         recover(input,re);
 8246  
                 }
 8247  
                 finally {
 8248  
                         // do for sure before leaving
 8249  0
                         if ( state.backtracking>0 ) { memoize(input, 98, forControl_StartIndex); }
 8250  
 
 8251  0
                 }
 8252  0
         }
 8253  
         // $ANTLR end "forControl"
 8254  
 
 8255  
 
 8256  
 
 8257  
         // $ANTLR start "forInit"
 8258  
         // org/argouml/language/java/reveng/Java.g:1332:1: forInit : ( localVariableDeclaration | expressionList );
 8259  
         public final void forInit() throws RecognitionException {
 8260  0
                 int forInit_StartIndex = input.index();
 8261  
 
 8262  
                 try {
 8263  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 99) ) { return; }
 8264  
 
 8265  
                         // org/argouml/language/java/reveng/Java.g:1333:5: ( localVariableDeclaration | expressionList )
 8266  0
                         int alt125=2;
 8267  0
                         switch ( input.LA(1) ) {
 8268  
                         case 56:
 8269  
                         case 76:
 8270  
                                 {
 8271  0
                                 alt125=1;
 8272  
                                 }
 8273  0
                                 break;
 8274  
                         case Identifier:
 8275  
                                 {
 8276  0
                                 switch ( input.LA(2) ) {
 8277  
                                 case 51:
 8278  
                                         {
 8279  0
                                         int LA125_22 = input.LA(3);
 8280  0
                                         if ( (synpred187_Java()) ) {
 8281  0
                                                 alt125=1;
 8282  
                                         }
 8283  
                                         else if ( (true) ) {
 8284  0
                                                 alt125=2;
 8285  
                                         }
 8286  
 
 8287  
                                         }
 8288  0
                                         break;
 8289  
                                 case 45:
 8290  
                                         {
 8291  0
                                         int LA125_23 = input.LA(3);
 8292  0
                                         if ( (synpred187_Java()) ) {
 8293  0
                                                 alt125=1;
 8294  
                                         }
 8295  
                                         else if ( (true) ) {
 8296  0
                                                 alt125=2;
 8297  
                                         }
 8298  
 
 8299  
                                         }
 8300  0
                                         break;
 8301  
                                 case 57:
 8302  
                                         {
 8303  0
                                         int LA125_24 = input.LA(3);
 8304  0
                                         if ( (synpred187_Java()) ) {
 8305  0
                                                 alt125=1;
 8306  
                                         }
 8307  
                                         else if ( (true) ) {
 8308  0
                                                 alt125=2;
 8309  
                                         }
 8310  
 
 8311  
                                         }
 8312  0
                                         break;
 8313  
                                 case Identifier:
 8314  
                                         {
 8315  0
                                         alt125=1;
 8316  
                                         }
 8317  0
                                         break;
 8318  
                                 case EOF:
 8319  
                                 case 28:
 8320  
                                 case 29:
 8321  
                                 case 30:
 8322  
                                 case 31:
 8323  
                                 case 32:
 8324  
                                 case 33:
 8325  
                                 case 34:
 8326  
                                 case 36:
 8327  
                                 case 37:
 8328  
                                 case 38:
 8329  
                                 case 39:
 8330  
                                 case 40:
 8331  
                                 case 41:
 8332  
                                 case 42:
 8333  
                                 case 43:
 8334  
                                 case 44:
 8335  
                                 case 47:
 8336  
                                 case 48:
 8337  
                                 case 50:
 8338  
                                 case 52:
 8339  
                                 case 53:
 8340  
                                 case 54:
 8341  
                                 case 55:
 8342  
                                 case 59:
 8343  
                                 case 60:
 8344  
                                 case 83:
 8345  
                                 case 111:
 8346  
                                 case 112:
 8347  
                                 case 113:
 8348  
                                         {
 8349  0
                                         alt125=2;
 8350  
                                         }
 8351  0
                                         break;
 8352  
                                 default:
 8353  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 8354  0
                                         int nvaeMark = input.mark();
 8355  
                                         try {
 8356  0
                                                 input.consume();
 8357  0
                                                 NoViableAltException nvae =
 8358  
                                                         new NoViableAltException("", 125, 3, input);
 8359  0
                                                 throw nvae;
 8360  
                                         } finally {
 8361  0
                                                 input.rewind(nvaeMark);
 8362  0
                                         }
 8363  
                                 }
 8364  
                                 }
 8365  0
                                 break;
 8366  
                         case 62:
 8367  
                         case 64:
 8368  
                         case 67:
 8369  
                         case 72:
 8370  
                         case 78:
 8371  
                         case 84:
 8372  
                         case 86:
 8373  
                         case 95:
 8374  
                                 {
 8375  0
                                 switch ( input.LA(2) ) {
 8376  
                                 case 57:
 8377  
                                         {
 8378  0
                                         int LA125_51 = input.LA(3);
 8379  0
                                         if ( (synpred187_Java()) ) {
 8380  0
                                                 alt125=1;
 8381  
                                         }
 8382  
                                         else if ( (true) ) {
 8383  0
                                                 alt125=2;
 8384  
                                         }
 8385  
 
 8386  
                                         }
 8387  0
                                         break;
 8388  
                                 case Identifier:
 8389  
                                         {
 8390  0
                                         alt125=1;
 8391  
                                         }
 8392  0
                                         break;
 8393  
                                 case 45:
 8394  
                                         {
 8395  0
                                         alt125=2;
 8396  
                                         }
 8397  0
                                         break;
 8398  
                                 default:
 8399  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 8400  0
                                         int nvaeMark = input.mark();
 8401  
                                         try {
 8402  0
                                                 input.consume();
 8403  0
                                                 NoViableAltException nvae =
 8404  
                                                         new NoViableAltException("", 125, 4, input);
 8405  0
                                                 throw nvae;
 8406  
                                         } finally {
 8407  0
                                                 input.rewind(nvaeMark);
 8408  0
                                         }
 8409  
                                 }
 8410  
                                 }
 8411  0
                                 break;
 8412  
                         case CharacterLiteral:
 8413  
                         case DecimalLiteral:
 8414  
                         case FloatingPointLiteral:
 8415  
                         case HexLiteral:
 8416  
                         case OctalLiteral:
 8417  
                         case StringLiteral:
 8418  
                         case 27:
 8419  
                         case 34:
 8420  
                         case 38:
 8421  
                         case 39:
 8422  
                         case 42:
 8423  
                         case 43:
 8424  
                         case 75:
 8425  
                         case 88:
 8426  
                         case 89:
 8427  
                         case 98:
 8428  
                         case 101:
 8429  
                         case 105:
 8430  
                         case 107:
 8431  
                         case 115:
 8432  
                                 {
 8433  0
                                 alt125=2;
 8434  
                                 }
 8435  0
                                 break;
 8436  
                         default:
 8437  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 8438  0
                                 NoViableAltException nvae =
 8439  
                                         new NoViableAltException("", 125, 0, input);
 8440  0
                                 throw nvae;
 8441  
                         }
 8442  0
                         switch (alt125) {
 8443  
                                 case 1 :
 8444  
                                         // org/argouml/language/java/reveng/Java.g:1333:9: localVariableDeclaration
 8445  
                                         {
 8446  0
                                         pushFollow(FOLLOW_localVariableDeclaration_in_forInit5712);
 8447  0
                                         localVariableDeclaration();
 8448  0
                                         state._fsp--;
 8449  0
                                         if (state.failed) return;
 8450  
                                         }
 8451  
                                         break;
 8452  
                                 case 2 :
 8453  
                                         // org/argouml/language/java/reveng/Java.g:1334:9: expressionList
 8454  
                                         {
 8455  0
                                         pushFollow(FOLLOW_expressionList_in_forInit5722);
 8456  0
                                         expressionList();
 8457  0
                                         state._fsp--;
 8458  0
                                         if (state.failed) return;
 8459  
                                         }
 8460  
                                         break;
 8461  
 
 8462  
                         }
 8463  
                 }
 8464  0
                 catch (RecognitionException re) {
 8465  0
                         reportError(re);
 8466  0
                         recover(input,re);
 8467  
                 }
 8468  
                 finally {
 8469  
                         // do for sure before leaving
 8470  0
                         if ( state.backtracking>0 ) { memoize(input, 99, forInit_StartIndex); }
 8471  
 
 8472  0
                 }
 8473  0
         }
 8474  
         // $ANTLR end "forInit"
 8475  
 
 8476  
 
 8477  
 
 8478  
         // $ANTLR start "enhancedForControl"
 8479  
         // org/argouml/language/java/reveng/Java.g:1337:1: enhancedForControl : variableModifiers type Identifier ':' expression ;
 8480  
         public final void enhancedForControl() throws RecognitionException {
 8481  0
                 int enhancedForControl_StartIndex = input.index();
 8482  
 
 8483  
                 try {
 8484  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 100) ) { return; }
 8485  
 
 8486  
                         // org/argouml/language/java/reveng/Java.g:1338:5: ( variableModifiers type Identifier ':' expression )
 8487  
                         // org/argouml/language/java/reveng/Java.g:1338:9: variableModifiers type Identifier ':' expression
 8488  
                         {
 8489  0
                         pushFollow(FOLLOW_variableModifiers_in_enhancedForControl5745);
 8490  0
                         variableModifiers();
 8491  0
                         state._fsp--;
 8492  0
                         if (state.failed) return;
 8493  0
                         pushFollow(FOLLOW_type_in_enhancedForControl5747);
 8494  0
                         type();
 8495  0
                         state._fsp--;
 8496  0
                         if (state.failed) return;
 8497  0
                         match(input,Identifier,FOLLOW_Identifier_in_enhancedForControl5749); if (state.failed) return;
 8498  0
                         match(input,49,FOLLOW_49_in_enhancedForControl5751); if (state.failed) return;
 8499  0
                         pushFollow(FOLLOW_expression_in_enhancedForControl5753);
 8500  0
                         expression();
 8501  0
                         state._fsp--;
 8502  0
                         if (state.failed) return;
 8503  
                         }
 8504  
 
 8505  
                 }
 8506  0
                 catch (RecognitionException re) {
 8507  0
                         reportError(re);
 8508  0
                         recover(input,re);
 8509  
                 }
 8510  
                 finally {
 8511  
                         // do for sure before leaving
 8512  0
                         if ( state.backtracking>0 ) { memoize(input, 100, enhancedForControl_StartIndex); }
 8513  
 
 8514  0
                 }
 8515  0
         }
 8516  
         // $ANTLR end "enhancedForControl"
 8517  
 
 8518  
 
 8519  
 
 8520  
         // $ANTLR start "forUpdate"
 8521  
         // org/argouml/language/java/reveng/Java.g:1341:1: forUpdate : expressionList ;
 8522  
         public final void forUpdate() throws RecognitionException {
 8523  0
                 int forUpdate_StartIndex = input.index();
 8524  
 
 8525  
                 try {
 8526  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 101) ) { return; }
 8527  
 
 8528  
                         // org/argouml/language/java/reveng/Java.g:1342:5: ( expressionList )
 8529  
                         // org/argouml/language/java/reveng/Java.g:1342:9: expressionList
 8530  
                         {
 8531  0
                         pushFollow(FOLLOW_expressionList_in_forUpdate5772);
 8532  0
                         expressionList();
 8533  0
                         state._fsp--;
 8534  0
                         if (state.failed) return;
 8535  
                         }
 8536  
 
 8537  
                 }
 8538  0
                 catch (RecognitionException re) {
 8539  0
                         reportError(re);
 8540  0
                         recover(input,re);
 8541  
                 }
 8542  
                 finally {
 8543  
                         // do for sure before leaving
 8544  0
                         if ( state.backtracking>0 ) { memoize(input, 101, forUpdate_StartIndex); }
 8545  
 
 8546  0
                 }
 8547  0
         }
 8548  
         // $ANTLR end "forUpdate"
 8549  
 
 8550  
 
 8551  
 
 8552  
         // $ANTLR start "parExpression"
 8553  
         // org/argouml/language/java/reveng/Java.g:1347:1: parExpression : '(' expression ')' ;
 8554  
         public final void parExpression() throws RecognitionException {
 8555  14
                 int parExpression_StartIndex = input.index();
 8556  
 
 8557  
                 try {
 8558  14
                         if ( state.backtracking>0 && alreadyParsedRule(input, 102) ) { return; }
 8559  
 
 8560  
                         // org/argouml/language/java/reveng/Java.g:1348:5: ( '(' expression ')' )
 8561  
                         // org/argouml/language/java/reveng/Java.g:1348:9: '(' expression ')'
 8562  
                         {
 8563  14
                         match(input,34,FOLLOW_34_in_parExpression5793); if (state.failed) return;
 8564  14
                         pushFollow(FOLLOW_expression_in_parExpression5795);
 8565  14
                         expression();
 8566  14
                         state._fsp--;
 8567  14
                         if (state.failed) return;
 8568  14
                         match(input,35,FOLLOW_35_in_parExpression5797); if (state.failed) return;
 8569  
                         }
 8570  
 
 8571  
                 }
 8572  0
                 catch (RecognitionException re) {
 8573  0
                         reportError(re);
 8574  0
                         recover(input,re);
 8575  
                 }
 8576  
                 finally {
 8577  
                         // do for sure before leaving
 8578  14
                         if ( state.backtracking>0 ) { memoize(input, 102, parExpression_StartIndex); }
 8579  
 
 8580  0
                 }
 8581  14
         }
 8582  
         // $ANTLR end "parExpression"
 8583  
 
 8584  
 
 8585  
 
 8586  
         // $ANTLR start "expressionList"
 8587  
         // org/argouml/language/java/reveng/Java.g:1351:1: expressionList : expression ( ',' expression )* ;
 8588  
         public final void expressionList() throws RecognitionException {
 8589  8
                 int expressionList_StartIndex = input.index();
 8590  
 
 8591  
                 try {
 8592  8
                         if ( state.backtracking>0 && alreadyParsedRule(input, 103) ) { return; }
 8593  
 
 8594  
                         // org/argouml/language/java/reveng/Java.g:1352:5: ( expression ( ',' expression )* )
 8595  
                         // org/argouml/language/java/reveng/Java.g:1352:9: expression ( ',' expression )*
 8596  
                         {
 8597  8
                         pushFollow(FOLLOW_expression_in_expressionList5820);
 8598  8
                         expression();
 8599  8
                         state._fsp--;
 8600  8
                         if (state.failed) return;
 8601  
                         // org/argouml/language/java/reveng/Java.g:1352:20: ( ',' expression )*
 8602  
                         loop126:
 8603  
                         while (true) {
 8604  8
                                 int alt126=2;
 8605  8
                                 int LA126_0 = input.LA(1);
 8606  8
                                 if ( (LA126_0==41) ) {
 8607  0
                                         alt126=1;
 8608  
                                 }
 8609  
 
 8610  8
                                 switch (alt126) {
 8611  
                                 case 1 :
 8612  
                                         // org/argouml/language/java/reveng/Java.g:1352:21: ',' expression
 8613  
                                         {
 8614  0
                                         match(input,41,FOLLOW_41_in_expressionList5823); if (state.failed) return;
 8615  0
                                         pushFollow(FOLLOW_expression_in_expressionList5825);
 8616  0
                                         expression();
 8617  0
                                         state._fsp--;
 8618  0
                                         if (state.failed) return;
 8619  
                                         }
 8620  
                                         break;
 8621  
 
 8622  
                                 default :
 8623  8
                                         break loop126;
 8624  
                                 }
 8625  0
                         }
 8626  
 
 8627  
                         }
 8628  
 
 8629  
                 }
 8630  0
                 catch (RecognitionException re) {
 8631  0
                         reportError(re);
 8632  0
                         recover(input,re);
 8633  
                 }
 8634  
                 finally {
 8635  
                         // do for sure before leaving
 8636  8
                         if ( state.backtracking>0 ) { memoize(input, 103, expressionList_StartIndex); }
 8637  
 
 8638  0
                 }
 8639  8
         }
 8640  
         // $ANTLR end "expressionList"
 8641  
 
 8642  
 
 8643  
 
 8644  
         // $ANTLR start "statementExpression"
 8645  
         // org/argouml/language/java/reveng/Java.g:1355:1: statementExpression : expression ;
 8646  
         public final void statementExpression() throws RecognitionException {
 8647  21
                 int statementExpression_StartIndex = input.index();
 8648  
 
 8649  
                 try {
 8650  21
                         if ( state.backtracking>0 && alreadyParsedRule(input, 104) ) { return; }
 8651  
 
 8652  
                         // org/argouml/language/java/reveng/Java.g:1356:5: ( expression )
 8653  
                         // org/argouml/language/java/reveng/Java.g:1356:9: expression
 8654  
                         {
 8655  21
                         pushFollow(FOLLOW_expression_in_statementExpression5846);
 8656  21
                         expression();
 8657  21
                         state._fsp--;
 8658  21
                         if (state.failed) return;
 8659  
                         }
 8660  
 
 8661  
                 }
 8662  0
                 catch (RecognitionException re) {
 8663  0
                         reportError(re);
 8664  0
                         recover(input,re);
 8665  
                 }
 8666  
                 finally {
 8667  
                         // do for sure before leaving
 8668  21
                         if ( state.backtracking>0 ) { memoize(input, 104, statementExpression_StartIndex); }
 8669  
 
 8670  0
                 }
 8671  21
         }
 8672  
         // $ANTLR end "statementExpression"
 8673  
 
 8674  
 
 8675  
 
 8676  
         // $ANTLR start "constantExpression"
 8677  
         // org/argouml/language/java/reveng/Java.g:1360:1: constantExpression : expression ;
 8678  
         public final void constantExpression() throws RecognitionException {
 8679  12
                 int constantExpression_StartIndex = input.index();
 8680  
 
 8681  
                 try {
 8682  12
                         if ( state.backtracking>0 && alreadyParsedRule(input, 105) ) { return; }
 8683  
 
 8684  
                         // org/argouml/language/java/reveng/Java.g:1361:5: ( expression )
 8685  
                         // org/argouml/language/java/reveng/Java.g:1361:9: expression
 8686  
                         {
 8687  12
                         pushFollow(FOLLOW_expression_in_constantExpression5878);
 8688  12
                         expression();
 8689  12
                         state._fsp--;
 8690  12
                         if (state.failed) return;
 8691  
                         }
 8692  
 
 8693  
                 }
 8694  0
                 catch (RecognitionException re) {
 8695  0
                         reportError(re);
 8696  0
                         recover(input,re);
 8697  
                 }
 8698  
                 finally {
 8699  
                         // do for sure before leaving
 8700  12
                         if ( state.backtracking>0 ) { memoize(input, 105, constantExpression_StartIndex); }
 8701  
 
 8702  0
                 }
 8703  12
         }
 8704  
         // $ANTLR end "constantExpression"
 8705  
 
 8706  
 
 8707  
 
 8708  
         // $ANTLR start "expression"
 8709  
         // org/argouml/language/java/reveng/Java.g:1364:1: expression : conditionalExpression ( assignmentOperator expression )? ;
 8710  
         public final void expression() throws RecognitionException {
 8711  133
                 int expression_StartIndex = input.index();
 8712  
 
 8713  
                 try {
 8714  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 106) ) { return; }
 8715  
 
 8716  
                         // org/argouml/language/java/reveng/Java.g:1365:5: ( conditionalExpression ( assignmentOperator expression )? )
 8717  
                         // org/argouml/language/java/reveng/Java.g:1365:9: conditionalExpression ( assignmentOperator expression )?
 8718  
                         {
 8719  133
                         pushFollow(FOLLOW_conditionalExpression_in_expression5901);
 8720  133
                         conditionalExpression();
 8721  133
                         state._fsp--;
 8722  133
                         if (state.failed) return;
 8723  
                         // org/argouml/language/java/reveng/Java.g:1365:31: ( assignmentOperator expression )?
 8724  133
                         int alt127=2;
 8725  133
                         alt127 = dfa127.predict(input);
 8726  133
                         switch (alt127) {
 8727  
                                 case 1 :
 8728  
                                         // org/argouml/language/java/reveng/Java.g:1365:32: assignmentOperator expression
 8729  
                                         {
 8730  21
                                         pushFollow(FOLLOW_assignmentOperator_in_expression5904);
 8731  21
                                         assignmentOperator();
 8732  21
                                         state._fsp--;
 8733  21
                                         if (state.failed) return;
 8734  21
                                         pushFollow(FOLLOW_expression_in_expression5906);
 8735  21
                                         expression();
 8736  21
                                         state._fsp--;
 8737  21
                                         if (state.failed) return;
 8738  
                                         }
 8739  
                                         break;
 8740  
 
 8741  
                         }
 8742  
 
 8743  
                         }
 8744  
 
 8745  
                 }
 8746  0
                 catch (RecognitionException re) {
 8747  0
                         reportError(re);
 8748  0
                         recover(input,re);
 8749  
                 }
 8750  
                 finally {
 8751  
                         // do for sure before leaving
 8752  133
                         if ( state.backtracking>0 ) { memoize(input, 106, expression_StartIndex); }
 8753  
 
 8754  0
                 }
 8755  133
         }
 8756  
         // $ANTLR end "expression"
 8757  
 
 8758  
 
 8759  
 
 8760  
         // $ANTLR start "assignmentOperator"
 8761  
         // org/argouml/language/java/reveng/Java.g:1368:1: assignmentOperator : ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | ( '<' '<' '=' )=>t1= '<' t2= '<' t3= '=' {...}?| ( '>' '>' '>' '=' )=>t1= '>' t2= '>' t3= '>' t4= '=' {...}?| ( '>' '>' '=' )=>t1= '>' t2= '>' t3= '=' {...}?);
 8762  
         public final void assignmentOperator() throws RecognitionException {
 8763  42
                 int assignmentOperator_StartIndex = input.index();
 8764  
 
 8765  42
                 Token t1=null;
 8766  42
                 Token t2=null;
 8767  42
                 Token t3=null;
 8768  42
                 Token t4=null;
 8769  
 
 8770  
                 try {
 8771  42
                         if ( state.backtracking>0 && alreadyParsedRule(input, 107) ) { return; }
 8772  
 
 8773  
                         // org/argouml/language/java/reveng/Java.g:1369:5: ( '=' | '+=' | '-=' | '*=' | '/=' | '&=' | '|=' | '^=' | '%=' | ( '<' '<' '=' )=>t1= '<' t2= '<' t3= '=' {...}?| ( '>' '>' '>' '=' )=>t1= '>' t2= '>' t3= '>' t4= '=' {...}?| ( '>' '>' '=' )=>t1= '>' t2= '>' t3= '=' {...}?)
 8774  42
                         int alt128=12;
 8775  42
                         int LA128_0 = input.LA(1);
 8776  42
                         if ( (LA128_0==52) ) {
 8777  42
                                 alt128=1;
 8778  
                         }
 8779  0
                         else if ( (LA128_0==40) ) {
 8780  0
                                 alt128=2;
 8781  
                         }
 8782  0
                         else if ( (LA128_0==44) ) {
 8783  0
                                 alt128=3;
 8784  
                         }
 8785  0
                         else if ( (LA128_0==37) ) {
 8786  0
                                 alt128=4;
 8787  
                         }
 8788  0
                         else if ( (LA128_0==48) ) {
 8789  0
                                 alt128=5;
 8790  
                         }
 8791  0
                         else if ( (LA128_0==33) ) {
 8792  0
                                 alt128=6;
 8793  
                         }
 8794  0
                         else if ( (LA128_0==112) ) {
 8795  0
                                 alt128=7;
 8796  
                         }
 8797  0
                         else if ( (LA128_0==60) ) {
 8798  0
                                 alt128=8;
 8799  
                         }
 8800  0
                         else if ( (LA128_0==30) ) {
 8801  0
                                 alt128=9;
 8802  
                         }
 8803  0
                         else if ( (LA128_0==51) && (synpred199_Java())) {
 8804  0
                                 alt128=10;
 8805  
                         }
 8806  0
                         else if ( (LA128_0==54) ) {
 8807  0
                                 int LA128_11 = input.LA(2);
 8808  0
                                 if ( (LA128_11==54) ) {
 8809  0
                                         int LA128_12 = input.LA(3);
 8810  0
                                         if ( (synpred200_Java()) ) {
 8811  0
                                                 alt128=11;
 8812  
                                         }
 8813  0
                                         else if ( (synpred201_Java()) ) {
 8814  0
                                                 alt128=12;
 8815  
                                         }
 8816  
 
 8817  
                                         else {
 8818  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 8819  0
                                                 int nvaeMark = input.mark();
 8820  
                                                 try {
 8821  0
                                                         for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
 8822  0
                                                                 input.consume();
 8823  
                                                         }
 8824  0
                                                         NoViableAltException nvae =
 8825  
                                                                 new NoViableAltException("", 128, 12, input);
 8826  0
                                                         throw nvae;
 8827  
                                                 } finally {
 8828  0
                                                         input.rewind(nvaeMark);
 8829  0
                                                 }
 8830  
                                         }
 8831  
 
 8832  0
                                 }
 8833  
 
 8834  
                                 else {
 8835  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 8836  0
                                         int nvaeMark = input.mark();
 8837  
                                         try {
 8838  0
                                                 input.consume();
 8839  0
                                                 NoViableAltException nvae =
 8840  
                                                         new NoViableAltException("", 128, 11, input);
 8841  0
                                                 throw nvae;
 8842  
                                         } finally {
 8843  0
                                                 input.rewind(nvaeMark);
 8844  0
                                         }
 8845  
                                 }
 8846  
 
 8847  0
                         }
 8848  
 
 8849  
                         else {
 8850  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 8851  0
                                 NoViableAltException nvae =
 8852  
                                         new NoViableAltException("", 128, 0, input);
 8853  0
                                 throw nvae;
 8854  
                         }
 8855  
 
 8856  42
                         switch (alt128) {
 8857  
                                 case 1 :
 8858  
                                         // org/argouml/language/java/reveng/Java.g:1369:9: '='
 8859  
                                         {
 8860  42
                                         match(input,52,FOLLOW_52_in_assignmentOperator5931); if (state.failed) return;
 8861  
                                         }
 8862  
                                         break;
 8863  
                                 case 2 :
 8864  
                                         // org/argouml/language/java/reveng/Java.g:1370:9: '+='
 8865  
                                         {
 8866  0
                                         match(input,40,FOLLOW_40_in_assignmentOperator5941); if (state.failed) return;
 8867  
                                         }
 8868  
                                         break;
 8869  
                                 case 3 :
 8870  
                                         // org/argouml/language/java/reveng/Java.g:1371:9: '-='
 8871  
                                         {
 8872  0
                                         match(input,44,FOLLOW_44_in_assignmentOperator5951); if (state.failed) return;
 8873  
                                         }
 8874  
                                         break;
 8875  
                                 case 4 :
 8876  
                                         // org/argouml/language/java/reveng/Java.g:1372:9: '*='
 8877  
                                         {
 8878  0
                                         match(input,37,FOLLOW_37_in_assignmentOperator5961); if (state.failed) return;
 8879  
                                         }
 8880  
                                         break;
 8881  
                                 case 5 :
 8882  
                                         // org/argouml/language/java/reveng/Java.g:1373:9: '/='
 8883  
                                         {
 8884  0
                                         match(input,48,FOLLOW_48_in_assignmentOperator5971); if (state.failed) return;
 8885  
                                         }
 8886  
                                         break;
 8887  
                                 case 6 :
 8888  
                                         // org/argouml/language/java/reveng/Java.g:1374:9: '&='
 8889  
                                         {
 8890  0
                                         match(input,33,FOLLOW_33_in_assignmentOperator5981); if (state.failed) return;
 8891  
                                         }
 8892  
                                         break;
 8893  
                                 case 7 :
 8894  
                                         // org/argouml/language/java/reveng/Java.g:1375:9: '|='
 8895  
                                         {
 8896  0
                                         match(input,112,FOLLOW_112_in_assignmentOperator5991); if (state.failed) return;
 8897  
                                         }
 8898  
                                         break;
 8899  
                                 case 8 :
 8900  
                                         // org/argouml/language/java/reveng/Java.g:1376:9: '^='
 8901  
                                         {
 8902  0
                                         match(input,60,FOLLOW_60_in_assignmentOperator6001); if (state.failed) return;
 8903  
                                         }
 8904  
                                         break;
 8905  
                                 case 9 :
 8906  
                                         // org/argouml/language/java/reveng/Java.g:1377:9: '%='
 8907  
                                         {
 8908  0
                                         match(input,30,FOLLOW_30_in_assignmentOperator6011); if (state.failed) return;
 8909  
                                         }
 8910  
                                         break;
 8911  
                                 case 10 :
 8912  
                                         // org/argouml/language/java/reveng/Java.g:1378:9: ( '<' '<' '=' )=>t1= '<' t2= '<' t3= '=' {...}?
 8913  
                                         {
 8914  0
                                         t1=(Token)match(input,51,FOLLOW_51_in_assignmentOperator6032); if (state.failed) return;
 8915  0
                                         t2=(Token)match(input,51,FOLLOW_51_in_assignmentOperator6036); if (state.failed) return;
 8916  0
                                         t3=(Token)match(input,52,FOLLOW_52_in_assignmentOperator6040); if (state.failed) return;
 8917  0
                                         if ( !(( t1.getLine() == t2.getLine() &&
 8918  0
                                                   t1.getCharPositionInLine() + 1 == t2.getCharPositionInLine() && 
 8919  0
                                                   t2.getLine() == t3.getLine() && 
 8920  0
                                                   t2.getCharPositionInLine() + 1 == t3.getCharPositionInLine() )) ) {
 8921  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 8922  0
                                                 throw new FailedPredicateException(input, "assignmentOperator", " $t1.getLine() == $t2.getLine() &&\r\n          $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() && \r\n          $t2.getLine() == $t3.getLine() && \r\n          $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() ");
 8923  
                                         }
 8924  
                                         }
 8925  
                                         break;
 8926  
                                 case 11 :
 8927  
                                         // org/argouml/language/java/reveng/Java.g:1383:9: ( '>' '>' '>' '=' )=>t1= '>' t2= '>' t3= '>' t4= '=' {...}?
 8928  
                                         {
 8929  0
                                         t1=(Token)match(input,54,FOLLOW_54_in_assignmentOperator6074); if (state.failed) return;
 8930  0
                                         t2=(Token)match(input,54,FOLLOW_54_in_assignmentOperator6078); if (state.failed) return;
 8931  0
                                         t3=(Token)match(input,54,FOLLOW_54_in_assignmentOperator6082); if (state.failed) return;
 8932  0
                                         t4=(Token)match(input,52,FOLLOW_52_in_assignmentOperator6086); if (state.failed) return;
 8933  0
                                         if ( !(( t1.getLine() == t2.getLine() && 
 8934  0
                                                   t1.getCharPositionInLine() + 1 == t2.getCharPositionInLine() &&
 8935  0
                                                   t2.getLine() == t3.getLine() && 
 8936  0
                                                   t2.getCharPositionInLine() + 1 == t3.getCharPositionInLine() &&
 8937  0
                                                   t3.getLine() == t4.getLine() && 
 8938  0
                                                   t3.getCharPositionInLine() + 1 == t4.getCharPositionInLine() )) ) {
 8939  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 8940  0
                                                 throw new FailedPredicateException(input, "assignmentOperator", " $t1.getLine() == $t2.getLine() && \r\n          $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&\r\n          $t2.getLine() == $t3.getLine() && \r\n          $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() &&\r\n          $t3.getLine() == $t4.getLine() && \r\n          $t3.getCharPositionInLine() + 1 == $t4.getCharPositionInLine() ");
 8941  
                                         }
 8942  
                                         }
 8943  
                                         break;
 8944  
                                 case 12 :
 8945  
                                         // org/argouml/language/java/reveng/Java.g:1390:9: ( '>' '>' '=' )=>t1= '>' t2= '>' t3= '=' {...}?
 8946  
                                         {
 8947  0
                                         t1=(Token)match(input,54,FOLLOW_54_in_assignmentOperator6117); if (state.failed) return;
 8948  0
                                         t2=(Token)match(input,54,FOLLOW_54_in_assignmentOperator6121); if (state.failed) return;
 8949  0
                                         t3=(Token)match(input,52,FOLLOW_52_in_assignmentOperator6125); if (state.failed) return;
 8950  0
                                         if ( !(( t1.getLine() == t2.getLine() && 
 8951  0
                                                   t1.getCharPositionInLine() + 1 == t2.getCharPositionInLine() && 
 8952  0
                                                   t2.getLine() == t3.getLine() && 
 8953  0
                                                   t2.getCharPositionInLine() + 1 == t3.getCharPositionInLine() )) ) {
 8954  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 8955  0
                                                 throw new FailedPredicateException(input, "assignmentOperator", " $t1.getLine() == $t2.getLine() && \r\n          $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() && \r\n          $t2.getLine() == $t3.getLine() && \r\n          $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() ");
 8956  
                                         }
 8957  
                                         }
 8958  
                                         break;
 8959  
 
 8960  
                         }
 8961  
                 }
 8962  0
                 catch (RecognitionException re) {
 8963  0
                         reportError(re);
 8964  0
                         recover(input,re);
 8965  
                 }
 8966  
                 finally {
 8967  
                         // do for sure before leaving
 8968  42
                         if ( state.backtracking>0 ) { memoize(input, 107, assignmentOperator_StartIndex); }
 8969  
 
 8970  0
                 }
 8971  42
         }
 8972  
         // $ANTLR end "assignmentOperator"
 8973  
 
 8974  
 
 8975  
 
 8976  
         // $ANTLR start "conditionalExpression"
 8977  
         // org/argouml/language/java/reveng/Java.g:1397:1: conditionalExpression : conditionalOrExpression ( '?' expression ':' expression )? ;
 8978  
         public final void conditionalExpression() throws RecognitionException {
 8979  133
                 int conditionalExpression_StartIndex = input.index();
 8980  
 
 8981  
                 try {
 8982  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 108) ) { return; }
 8983  
 
 8984  
                         // org/argouml/language/java/reveng/Java.g:1398:5: ( conditionalOrExpression ( '?' expression ':' expression )? )
 8985  
                         // org/argouml/language/java/reveng/Java.g:1398:9: conditionalOrExpression ( '?' expression ':' expression )?
 8986  
                         {
 8987  133
                         pushFollow(FOLLOW_conditionalOrExpression_in_conditionalExpression6154);
 8988  133
                         conditionalOrExpression();
 8989  133
                         state._fsp--;
 8990  133
                         if (state.failed) return;
 8991  
                         // org/argouml/language/java/reveng/Java.g:1398:33: ( '?' expression ':' expression )?
 8992  133
                         int alt129=2;
 8993  133
                         int LA129_0 = input.LA(1);
 8994  133
                         if ( (LA129_0==55) ) {
 8995  0
                                 alt129=1;
 8996  
                         }
 8997  133
                         switch (alt129) {
 8998  
                                 case 1 :
 8999  
                                         // org/argouml/language/java/reveng/Java.g:1398:35: '?' expression ':' expression
 9000  
                                         {
 9001  0
                                         match(input,55,FOLLOW_55_in_conditionalExpression6158); if (state.failed) return;
 9002  0
                                         pushFollow(FOLLOW_expression_in_conditionalExpression6160);
 9003  0
                                         expression();
 9004  0
                                         state._fsp--;
 9005  0
                                         if (state.failed) return;
 9006  0
                                         match(input,49,FOLLOW_49_in_conditionalExpression6162); if (state.failed) return;
 9007  0
                                         pushFollow(FOLLOW_expression_in_conditionalExpression6164);
 9008  0
                                         expression();
 9009  0
                                         state._fsp--;
 9010  0
                                         if (state.failed) return;
 9011  
                                         }
 9012  
                                         break;
 9013  
 
 9014  
                         }
 9015  
 
 9016  
                         }
 9017  
 
 9018  
                 }
 9019  0
                 catch (RecognitionException re) {
 9020  0
                         reportError(re);
 9021  0
                         recover(input,re);
 9022  
                 }
 9023  
                 finally {
 9024  
                         // do for sure before leaving
 9025  133
                         if ( state.backtracking>0 ) { memoize(input, 108, conditionalExpression_StartIndex); }
 9026  
 
 9027  0
                 }
 9028  133
         }
 9029  
         // $ANTLR end "conditionalExpression"
 9030  
 
 9031  
 
 9032  
 
 9033  
         // $ANTLR start "conditionalOrExpression"
 9034  
         // org/argouml/language/java/reveng/Java.g:1401:1: conditionalOrExpression : conditionalAndExpression ( '||' conditionalAndExpression )* ;
 9035  
         public final void conditionalOrExpression() throws RecognitionException {
 9036  133
                 int conditionalOrExpression_StartIndex = input.index();
 9037  
 
 9038  
                 try {
 9039  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 109) ) { return; }
 9040  
 
 9041  
                         // org/argouml/language/java/reveng/Java.g:1402:5: ( conditionalAndExpression ( '||' conditionalAndExpression )* )
 9042  
                         // org/argouml/language/java/reveng/Java.g:1402:9: conditionalAndExpression ( '||' conditionalAndExpression )*
 9043  
                         {
 9044  133
                         pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression6186);
 9045  133
                         conditionalAndExpression();
 9046  133
                         state._fsp--;
 9047  133
                         if (state.failed) return;
 9048  
                         // org/argouml/language/java/reveng/Java.g:1402:34: ( '||' conditionalAndExpression )*
 9049  
                         loop130:
 9050  
                         while (true) {
 9051  133
                                 int alt130=2;
 9052  133
                                 int LA130_0 = input.LA(1);
 9053  133
                                 if ( (LA130_0==113) ) {
 9054  0
                                         alt130=1;
 9055  
                                 }
 9056  
 
 9057  133
                                 switch (alt130) {
 9058  
                                 case 1 :
 9059  
                                         // org/argouml/language/java/reveng/Java.g:1402:36: '||' conditionalAndExpression
 9060  
                                         {
 9061  0
                                         match(input,113,FOLLOW_113_in_conditionalOrExpression6190); if (state.failed) return;
 9062  0
                                         pushFollow(FOLLOW_conditionalAndExpression_in_conditionalOrExpression6192);
 9063  0
                                         conditionalAndExpression();
 9064  0
                                         state._fsp--;
 9065  0
                                         if (state.failed) return;
 9066  
                                         }
 9067  
                                         break;
 9068  
 
 9069  
                                 default :
 9070  133
                                         break loop130;
 9071  
                                 }
 9072  0
                         }
 9073  
 
 9074  
                         }
 9075  
 
 9076  
                 }
 9077  0
                 catch (RecognitionException re) {
 9078  0
                         reportError(re);
 9079  0
                         recover(input,re);
 9080  
                 }
 9081  
                 finally {
 9082  
                         // do for sure before leaving
 9083  133
                         if ( state.backtracking>0 ) { memoize(input, 109, conditionalOrExpression_StartIndex); }
 9084  
 
 9085  0
                 }
 9086  133
         }
 9087  
         // $ANTLR end "conditionalOrExpression"
 9088  
 
 9089  
 
 9090  
 
 9091  
         // $ANTLR start "conditionalAndExpression"
 9092  
         // org/argouml/language/java/reveng/Java.g:1405:1: conditionalAndExpression : inclusiveOrExpression ( '&&' inclusiveOrExpression )* ;
 9093  
         public final void conditionalAndExpression() throws RecognitionException {
 9094  133
                 int conditionalAndExpression_StartIndex = input.index();
 9095  
 
 9096  
                 try {
 9097  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 110) ) { return; }
 9098  
 
 9099  
                         // org/argouml/language/java/reveng/Java.g:1406:5: ( inclusiveOrExpression ( '&&' inclusiveOrExpression )* )
 9100  
                         // org/argouml/language/java/reveng/Java.g:1406:9: inclusiveOrExpression ( '&&' inclusiveOrExpression )*
 9101  
                         {
 9102  133
                         pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression6214);
 9103  133
                         inclusiveOrExpression();
 9104  133
                         state._fsp--;
 9105  133
                         if (state.failed) return;
 9106  
                         // org/argouml/language/java/reveng/Java.g:1406:31: ( '&&' inclusiveOrExpression )*
 9107  
                         loop131:
 9108  
                         while (true) {
 9109  133
                                 int alt131=2;
 9110  133
                                 int LA131_0 = input.LA(1);
 9111  133
                                 if ( (LA131_0==31) ) {
 9112  0
                                         alt131=1;
 9113  
                                 }
 9114  
 
 9115  133
                                 switch (alt131) {
 9116  
                                 case 1 :
 9117  
                                         // org/argouml/language/java/reveng/Java.g:1406:33: '&&' inclusiveOrExpression
 9118  
                                         {
 9119  0
                                         match(input,31,FOLLOW_31_in_conditionalAndExpression6218); if (state.failed) return;
 9120  0
                                         pushFollow(FOLLOW_inclusiveOrExpression_in_conditionalAndExpression6220);
 9121  0
                                         inclusiveOrExpression();
 9122  0
                                         state._fsp--;
 9123  0
                                         if (state.failed) return;
 9124  
                                         }
 9125  
                                         break;
 9126  
 
 9127  
                                 default :
 9128  133
                                         break loop131;
 9129  
                                 }
 9130  0
                         }
 9131  
 
 9132  
                         }
 9133  
 
 9134  
                 }
 9135  0
                 catch (RecognitionException re) {
 9136  0
                         reportError(re);
 9137  0
                         recover(input,re);
 9138  
                 }
 9139  
                 finally {
 9140  
                         // do for sure before leaving
 9141  133
                         if ( state.backtracking>0 ) { memoize(input, 110, conditionalAndExpression_StartIndex); }
 9142  
 
 9143  0
                 }
 9144  133
         }
 9145  
         // $ANTLR end "conditionalAndExpression"
 9146  
 
 9147  
 
 9148  
 
 9149  
         // $ANTLR start "inclusiveOrExpression"
 9150  
         // org/argouml/language/java/reveng/Java.g:1409:1: inclusiveOrExpression : exclusiveOrExpression ( '|' exclusiveOrExpression )* ;
 9151  
         public final void inclusiveOrExpression() throws RecognitionException {
 9152  133
                 int inclusiveOrExpression_StartIndex = input.index();
 9153  
 
 9154  
                 try {
 9155  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 111) ) { return; }
 9156  
 
 9157  
                         // org/argouml/language/java/reveng/Java.g:1410:5: ( exclusiveOrExpression ( '|' exclusiveOrExpression )* )
 9158  
                         // org/argouml/language/java/reveng/Java.g:1410:9: exclusiveOrExpression ( '|' exclusiveOrExpression )*
 9159  
                         {
 9160  133
                         pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression6242);
 9161  133
                         exclusiveOrExpression();
 9162  133
                         state._fsp--;
 9163  133
                         if (state.failed) return;
 9164  
                         // org/argouml/language/java/reveng/Java.g:1410:31: ( '|' exclusiveOrExpression )*
 9165  
                         loop132:
 9166  
                         while (true) {
 9167  133
                                 int alt132=2;
 9168  133
                                 int LA132_0 = input.LA(1);
 9169  133
                                 if ( (LA132_0==111) ) {
 9170  0
                                         alt132=1;
 9171  
                                 }
 9172  
 
 9173  133
                                 switch (alt132) {
 9174  
                                 case 1 :
 9175  
                                         // org/argouml/language/java/reveng/Java.g:1410:33: '|' exclusiveOrExpression
 9176  
                                         {
 9177  0
                                         match(input,111,FOLLOW_111_in_inclusiveOrExpression6246); if (state.failed) return;
 9178  0
                                         pushFollow(FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression6248);
 9179  0
                                         exclusiveOrExpression();
 9180  0
                                         state._fsp--;
 9181  0
                                         if (state.failed) return;
 9182  
                                         }
 9183  
                                         break;
 9184  
 
 9185  
                                 default :
 9186  133
                                         break loop132;
 9187  
                                 }
 9188  0
                         }
 9189  
 
 9190  
                         }
 9191  
 
 9192  
                 }
 9193  0
                 catch (RecognitionException re) {
 9194  0
                         reportError(re);
 9195  0
                         recover(input,re);
 9196  
                 }
 9197  
                 finally {
 9198  
                         // do for sure before leaving
 9199  133
                         if ( state.backtracking>0 ) { memoize(input, 111, inclusiveOrExpression_StartIndex); }
 9200  
 
 9201  0
                 }
 9202  133
         }
 9203  
         // $ANTLR end "inclusiveOrExpression"
 9204  
 
 9205  
 
 9206  
 
 9207  
         // $ANTLR start "exclusiveOrExpression"
 9208  
         // org/argouml/language/java/reveng/Java.g:1413:1: exclusiveOrExpression : andExpression ( '^' andExpression )* ;
 9209  
         public final void exclusiveOrExpression() throws RecognitionException {
 9210  133
                 int exclusiveOrExpression_StartIndex = input.index();
 9211  
 
 9212  
                 try {
 9213  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 112) ) { return; }
 9214  
 
 9215  
                         // org/argouml/language/java/reveng/Java.g:1414:5: ( andExpression ( '^' andExpression )* )
 9216  
                         // org/argouml/language/java/reveng/Java.g:1414:9: andExpression ( '^' andExpression )*
 9217  
                         {
 9218  133
                         pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression6270);
 9219  133
                         andExpression();
 9220  133
                         state._fsp--;
 9221  133
                         if (state.failed) return;
 9222  
                         // org/argouml/language/java/reveng/Java.g:1414:23: ( '^' andExpression )*
 9223  
                         loop133:
 9224  
                         while (true) {
 9225  133
                                 int alt133=2;
 9226  133
                                 int LA133_0 = input.LA(1);
 9227  133
                                 if ( (LA133_0==59) ) {
 9228  0
                                         alt133=1;
 9229  
                                 }
 9230  
 
 9231  133
                                 switch (alt133) {
 9232  
                                 case 1 :
 9233  
                                         // org/argouml/language/java/reveng/Java.g:1414:25: '^' andExpression
 9234  
                                         {
 9235  0
                                         match(input,59,FOLLOW_59_in_exclusiveOrExpression6274); if (state.failed) return;
 9236  0
                                         pushFollow(FOLLOW_andExpression_in_exclusiveOrExpression6276);
 9237  0
                                         andExpression();
 9238  0
                                         state._fsp--;
 9239  0
                                         if (state.failed) return;
 9240  
                                         }
 9241  
                                         break;
 9242  
 
 9243  
                                 default :
 9244  133
                                         break loop133;
 9245  
                                 }
 9246  0
                         }
 9247  
 
 9248  
                         }
 9249  
 
 9250  
                 }
 9251  0
                 catch (RecognitionException re) {
 9252  0
                         reportError(re);
 9253  0
                         recover(input,re);
 9254  
                 }
 9255  
                 finally {
 9256  
                         // do for sure before leaving
 9257  133
                         if ( state.backtracking>0 ) { memoize(input, 112, exclusiveOrExpression_StartIndex); }
 9258  
 
 9259  0
                 }
 9260  133
         }
 9261  
         // $ANTLR end "exclusiveOrExpression"
 9262  
 
 9263  
 
 9264  
 
 9265  
         // $ANTLR start "andExpression"
 9266  
         // org/argouml/language/java/reveng/Java.g:1417:1: andExpression : equalityExpression ( '&' equalityExpression )* ;
 9267  
         public final void andExpression() throws RecognitionException {
 9268  133
                 int andExpression_StartIndex = input.index();
 9269  
 
 9270  
                 try {
 9271  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 113) ) { return; }
 9272  
 
 9273  
                         // org/argouml/language/java/reveng/Java.g:1418:5: ( equalityExpression ( '&' equalityExpression )* )
 9274  
                         // org/argouml/language/java/reveng/Java.g:1418:9: equalityExpression ( '&' equalityExpression )*
 9275  
                         {
 9276  133
                         pushFollow(FOLLOW_equalityExpression_in_andExpression6298);
 9277  133
                         equalityExpression();
 9278  133
                         state._fsp--;
 9279  133
                         if (state.failed) return;
 9280  
                         // org/argouml/language/java/reveng/Java.g:1418:28: ( '&' equalityExpression )*
 9281  
                         loop134:
 9282  
                         while (true) {
 9283  133
                                 int alt134=2;
 9284  133
                                 int LA134_0 = input.LA(1);
 9285  133
                                 if ( (LA134_0==32) ) {
 9286  0
                                         alt134=1;
 9287  
                                 }
 9288  
 
 9289  133
                                 switch (alt134) {
 9290  
                                 case 1 :
 9291  
                                         // org/argouml/language/java/reveng/Java.g:1418:30: '&' equalityExpression
 9292  
                                         {
 9293  0
                                         match(input,32,FOLLOW_32_in_andExpression6302); if (state.failed) return;
 9294  0
                                         pushFollow(FOLLOW_equalityExpression_in_andExpression6304);
 9295  0
                                         equalityExpression();
 9296  0
                                         state._fsp--;
 9297  0
                                         if (state.failed) return;
 9298  
                                         }
 9299  
                                         break;
 9300  
 
 9301  
                                 default :
 9302  133
                                         break loop134;
 9303  
                                 }
 9304  0
                         }
 9305  
 
 9306  
                         }
 9307  
 
 9308  
                 }
 9309  0
                 catch (RecognitionException re) {
 9310  0
                         reportError(re);
 9311  0
                         recover(input,re);
 9312  
                 }
 9313  
                 finally {
 9314  
                         // do for sure before leaving
 9315  133
                         if ( state.backtracking>0 ) { memoize(input, 113, andExpression_StartIndex); }
 9316  
 
 9317  0
                 }
 9318  133
         }
 9319  
         // $ANTLR end "andExpression"
 9320  
 
 9321  
 
 9322  
 
 9323  
         // $ANTLR start "equalityExpression"
 9324  
         // org/argouml/language/java/reveng/Java.g:1421:1: equalityExpression : instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* ;
 9325  
         public final void equalityExpression() throws RecognitionException {
 9326  133
                 int equalityExpression_StartIndex = input.index();
 9327  
 
 9328  
                 try {
 9329  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 114) ) { return; }
 9330  
 
 9331  
                         // org/argouml/language/java/reveng/Java.g:1422:5: ( instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )* )
 9332  
                         // org/argouml/language/java/reveng/Java.g:1422:9: instanceOfExpression ( ( '==' | '!=' ) instanceOfExpression )*
 9333  
                         {
 9334  133
                         pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression6326);
 9335  133
                         instanceOfExpression();
 9336  133
                         state._fsp--;
 9337  133
                         if (state.failed) return;
 9338  
                         // org/argouml/language/java/reveng/Java.g:1422:30: ( ( '==' | '!=' ) instanceOfExpression )*
 9339  
                         loop135:
 9340  
                         while (true) {
 9341  133
                                 int alt135=2;
 9342  133
                                 int LA135_0 = input.LA(1);
 9343  133
                                 if ( (LA135_0==28||LA135_0==53) ) {
 9344  0
                                         alt135=1;
 9345  
                                 }
 9346  
 
 9347  133
                                 switch (alt135) {
 9348  
                                 case 1 :
 9349  
                                         // org/argouml/language/java/reveng/Java.g:1422:32: ( '==' | '!=' ) instanceOfExpression
 9350  
                                         {
 9351  0
                                         if ( input.LA(1)==28||input.LA(1)==53 ) {
 9352  0
                                                 input.consume();
 9353  0
                                                 state.errorRecovery=false;
 9354  0
                                                 state.failed=false;
 9355  
                                         }
 9356  
                                         else {
 9357  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9358  0
                                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 9359  0
                                                 throw mse;
 9360  
                                         }
 9361  0
                                         pushFollow(FOLLOW_instanceOfExpression_in_equalityExpression6338);
 9362  0
                                         instanceOfExpression();
 9363  0
                                         state._fsp--;
 9364  0
                                         if (state.failed) return;
 9365  
                                         }
 9366  
                                         break;
 9367  
 
 9368  
                                 default :
 9369  133
                                         break loop135;
 9370  
                                 }
 9371  0
                         }
 9372  
 
 9373  
                         }
 9374  
 
 9375  
                 }
 9376  0
                 catch (RecognitionException re) {
 9377  0
                         reportError(re);
 9378  0
                         recover(input,re);
 9379  
                 }
 9380  
                 finally {
 9381  
                         // do for sure before leaving
 9382  133
                         if ( state.backtracking>0 ) { memoize(input, 114, equalityExpression_StartIndex); }
 9383  
 
 9384  0
                 }
 9385  133
         }
 9386  
         // $ANTLR end "equalityExpression"
 9387  
 
 9388  
 
 9389  
 
 9390  
         // $ANTLR start "instanceOfExpression"
 9391  
         // org/argouml/language/java/reveng/Java.g:1425:1: instanceOfExpression : relationalExpression ( 'instanceof' type )? ;
 9392  
         public final void instanceOfExpression() throws RecognitionException {
 9393  133
                 int instanceOfExpression_StartIndex = input.index();
 9394  
 
 9395  
                 try {
 9396  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 115) ) { return; }
 9397  
 
 9398  
                         // org/argouml/language/java/reveng/Java.g:1426:5: ( relationalExpression ( 'instanceof' type )? )
 9399  
                         // org/argouml/language/java/reveng/Java.g:1426:9: relationalExpression ( 'instanceof' type )?
 9400  
                         {
 9401  133
                         pushFollow(FOLLOW_relationalExpression_in_instanceOfExpression6360);
 9402  133
                         relationalExpression();
 9403  133
                         state._fsp--;
 9404  133
                         if (state.failed) return;
 9405  
                         // org/argouml/language/java/reveng/Java.g:1426:30: ( 'instanceof' type )?
 9406  133
                         int alt136=2;
 9407  133
                         int LA136_0 = input.LA(1);
 9408  133
                         if ( (LA136_0==83) ) {
 9409  12
                                 alt136=1;
 9410  
                         }
 9411  133
                         switch (alt136) {
 9412  
                                 case 1 :
 9413  
                                         // org/argouml/language/java/reveng/Java.g:1426:31: 'instanceof' type
 9414  
                                         {
 9415  12
                                         match(input,83,FOLLOW_83_in_instanceOfExpression6363); if (state.failed) return;
 9416  12
                                         pushFollow(FOLLOW_type_in_instanceOfExpression6365);
 9417  12
                                         type();
 9418  12
                                         state._fsp--;
 9419  12
                                         if (state.failed) return;
 9420  
                                         }
 9421  
                                         break;
 9422  
 
 9423  
                         }
 9424  
 
 9425  
                         }
 9426  
 
 9427  
                 }
 9428  0
                 catch (RecognitionException re) {
 9429  0
                         reportError(re);
 9430  0
                         recover(input,re);
 9431  
                 }
 9432  
                 finally {
 9433  
                         // do for sure before leaving
 9434  133
                         if ( state.backtracking>0 ) { memoize(input, 115, instanceOfExpression_StartIndex); }
 9435  
 
 9436  0
                 }
 9437  133
         }
 9438  
         // $ANTLR end "instanceOfExpression"
 9439  
 
 9440  
 
 9441  
 
 9442  
         // $ANTLR start "relationalExpression"
 9443  
         // org/argouml/language/java/reveng/Java.g:1429:1: relationalExpression : shiftExpression ( relationalOp shiftExpression )* ;
 9444  
         public final void relationalExpression() throws RecognitionException {
 9445  133
                 int relationalExpression_StartIndex = input.index();
 9446  
 
 9447  
                 try {
 9448  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 116) ) { return; }
 9449  
 
 9450  
                         // org/argouml/language/java/reveng/Java.g:1430:5: ( shiftExpression ( relationalOp shiftExpression )* )
 9451  
                         // org/argouml/language/java/reveng/Java.g:1430:9: shiftExpression ( relationalOp shiftExpression )*
 9452  
                         {
 9453  133
                         pushFollow(FOLLOW_shiftExpression_in_relationalExpression6386);
 9454  133
                         shiftExpression();
 9455  133
                         state._fsp--;
 9456  133
                         if (state.failed) return;
 9457  
                         // org/argouml/language/java/reveng/Java.g:1430:25: ( relationalOp shiftExpression )*
 9458  
                         loop137:
 9459  
                         while (true) {
 9460  133
                                 int alt137=2;
 9461  133
                                 alt137 = dfa137.predict(input);
 9462  133
                                 switch (alt137) {
 9463  
                                 case 1 :
 9464  
                                         // org/argouml/language/java/reveng/Java.g:1430:27: relationalOp shiftExpression
 9465  
                                         {
 9466  0
                                         pushFollow(FOLLOW_relationalOp_in_relationalExpression6390);
 9467  0
                                         relationalOp();
 9468  0
                                         state._fsp--;
 9469  0
                                         if (state.failed) return;
 9470  0
                                         pushFollow(FOLLOW_shiftExpression_in_relationalExpression6392);
 9471  0
                                         shiftExpression();
 9472  0
                                         state._fsp--;
 9473  0
                                         if (state.failed) return;
 9474  
                                         }
 9475  
                                         break;
 9476  
 
 9477  
                                 default :
 9478  133
                                         break loop137;
 9479  
                                 }
 9480  0
                         }
 9481  
 
 9482  
                         }
 9483  
 
 9484  
                 }
 9485  0
                 catch (RecognitionException re) {
 9486  0
                         reportError(re);
 9487  0
                         recover(input,re);
 9488  
                 }
 9489  
                 finally {
 9490  
                         // do for sure before leaving
 9491  133
                         if ( state.backtracking>0 ) { memoize(input, 116, relationalExpression_StartIndex); }
 9492  
 
 9493  0
                 }
 9494  133
         }
 9495  
         // $ANTLR end "relationalExpression"
 9496  
 
 9497  
 
 9498  
 
 9499  
         // $ANTLR start "relationalOp"
 9500  
         // org/argouml/language/java/reveng/Java.g:1433:1: relationalOp : ( ( '<' '=' )=>t1= '<' t2= '=' {...}?| ( '>' '=' )=>t1= '>' t2= '=' {...}?| '<' | '>' );
 9501  
         public final void relationalOp() throws RecognitionException {
 9502  0
                 int relationalOp_StartIndex = input.index();
 9503  
 
 9504  0
                 Token t1=null;
 9505  0
                 Token t2=null;
 9506  
 
 9507  
                 try {
 9508  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 117) ) { return; }
 9509  
 
 9510  
                         // org/argouml/language/java/reveng/Java.g:1434:5: ( ( '<' '=' )=>t1= '<' t2= '=' {...}?| ( '>' '=' )=>t1= '>' t2= '=' {...}?| '<' | '>' )
 9511  0
                         int alt138=4;
 9512  0
                         int LA138_0 = input.LA(1);
 9513  0
                         if ( (LA138_0==51) ) {
 9514  0
                                 int LA138_1 = input.LA(2);
 9515  0
                                 if ( (LA138_1==52) && (synpred212_Java())) {
 9516  0
                                         alt138=1;
 9517  
                                 }
 9518  0
                                 else if ( ((LA138_1 >= CharacterLiteral && LA138_1 <= DecimalLiteral)||LA138_1==FloatingPointLiteral||(LA138_1 >= HexLiteral && LA138_1 <= Identifier)||(LA138_1 >= OctalLiteral && LA138_1 <= StringLiteral)||LA138_1==27||LA138_1==34||(LA138_1 >= 38 && LA138_1 <= 39)||(LA138_1 >= 42 && LA138_1 <= 43)||LA138_1==62||LA138_1==64||LA138_1==67||LA138_1==72||LA138_1==75||LA138_1==78||LA138_1==84||LA138_1==86||(LA138_1 >= 88 && LA138_1 <= 89)||LA138_1==95||LA138_1==98||LA138_1==101||LA138_1==105||LA138_1==107||LA138_1==115) ) {
 9519  0
                                         alt138=3;
 9520  
                                 }
 9521  
 
 9522  
                                 else {
 9523  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 9524  0
                                         int nvaeMark = input.mark();
 9525  
                                         try {
 9526  0
                                                 input.consume();
 9527  0
                                                 NoViableAltException nvae =
 9528  
                                                         new NoViableAltException("", 138, 1, input);
 9529  0
                                                 throw nvae;
 9530  
                                         } finally {
 9531  0
                                                 input.rewind(nvaeMark);
 9532  0
                                         }
 9533  
                                 }
 9534  
 
 9535  0
                         }
 9536  0
                         else if ( (LA138_0==54) ) {
 9537  0
                                 int LA138_2 = input.LA(2);
 9538  0
                                 if ( (LA138_2==52) && (synpred213_Java())) {
 9539  0
                                         alt138=2;
 9540  
                                 }
 9541  0
                                 else if ( ((LA138_2 >= CharacterLiteral && LA138_2 <= DecimalLiteral)||LA138_2==FloatingPointLiteral||(LA138_2 >= HexLiteral && LA138_2 <= Identifier)||(LA138_2 >= OctalLiteral && LA138_2 <= StringLiteral)||LA138_2==27||LA138_2==34||(LA138_2 >= 38 && LA138_2 <= 39)||(LA138_2 >= 42 && LA138_2 <= 43)||LA138_2==62||LA138_2==64||LA138_2==67||LA138_2==72||LA138_2==75||LA138_2==78||LA138_2==84||LA138_2==86||(LA138_2 >= 88 && LA138_2 <= 89)||LA138_2==95||LA138_2==98||LA138_2==101||LA138_2==105||LA138_2==107||LA138_2==115) ) {
 9542  0
                                         alt138=4;
 9543  
                                 }
 9544  
 
 9545  
                                 else {
 9546  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 9547  0
                                         int nvaeMark = input.mark();
 9548  
                                         try {
 9549  0
                                                 input.consume();
 9550  0
                                                 NoViableAltException nvae =
 9551  
                                                         new NoViableAltException("", 138, 2, input);
 9552  0
                                                 throw nvae;
 9553  
                                         } finally {
 9554  0
                                                 input.rewind(nvaeMark);
 9555  0
                                         }
 9556  
                                 }
 9557  
 
 9558  0
                         }
 9559  
 
 9560  
                         else {
 9561  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 9562  0
                                 NoViableAltException nvae =
 9563  
                                         new NoViableAltException("", 138, 0, input);
 9564  0
                                 throw nvae;
 9565  
                         }
 9566  
 
 9567  0
                         switch (alt138) {
 9568  
                                 case 1 :
 9569  
                                         // org/argouml/language/java/reveng/Java.g:1434:9: ( '<' '=' )=>t1= '<' t2= '=' {...}?
 9570  
                                         {
 9571  0
                                         t1=(Token)match(input,51,FOLLOW_51_in_relationalOp6427); if (state.failed) return;
 9572  0
                                         t2=(Token)match(input,52,FOLLOW_52_in_relationalOp6431); if (state.failed) return;
 9573  0
                                         if ( !(( t1.getLine() == t2.getLine() && 
 9574  0
                                                   t1.getCharPositionInLine() + 1 == t2.getCharPositionInLine() )) ) {
 9575  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9576  0
                                                 throw new FailedPredicateException(input, "relationalOp", " $t1.getLine() == $t2.getLine() && \r\n          $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() ");
 9577  
                                         }
 9578  
                                         }
 9579  
                                         break;
 9580  
                                 case 2 :
 9581  
                                         // org/argouml/language/java/reveng/Java.g:1437:9: ( '>' '=' )=>t1= '>' t2= '=' {...}?
 9582  
                                         {
 9583  0
                                         t1=(Token)match(input,54,FOLLOW_54_in_relationalOp6461); if (state.failed) return;
 9584  0
                                         t2=(Token)match(input,52,FOLLOW_52_in_relationalOp6465); if (state.failed) return;
 9585  0
                                         if ( !(( t1.getLine() == t2.getLine() && 
 9586  0
                                                   t1.getCharPositionInLine() + 1 == t2.getCharPositionInLine() )) ) {
 9587  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9588  0
                                                 throw new FailedPredicateException(input, "relationalOp", " $t1.getLine() == $t2.getLine() && \r\n          $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() ");
 9589  
                                         }
 9590  
                                         }
 9591  
                                         break;
 9592  
                                 case 3 :
 9593  
                                         // org/argouml/language/java/reveng/Java.g:1440:9: '<'
 9594  
                                         {
 9595  0
                                         match(input,51,FOLLOW_51_in_relationalOp6486); if (state.failed) return;
 9596  
                                         }
 9597  
                                         break;
 9598  
                                 case 4 :
 9599  
                                         // org/argouml/language/java/reveng/Java.g:1441:9: '>'
 9600  
                                         {
 9601  0
                                         match(input,54,FOLLOW_54_in_relationalOp6497); if (state.failed) return;
 9602  
                                         }
 9603  
                                         break;
 9604  
 
 9605  
                         }
 9606  
                 }
 9607  0
                 catch (RecognitionException re) {
 9608  0
                         reportError(re);
 9609  0
                         recover(input,re);
 9610  
                 }
 9611  
                 finally {
 9612  
                         // do for sure before leaving
 9613  0
                         if ( state.backtracking>0 ) { memoize(input, 117, relationalOp_StartIndex); }
 9614  
 
 9615  0
                 }
 9616  0
         }
 9617  
         // $ANTLR end "relationalOp"
 9618  
 
 9619  
 
 9620  
 
 9621  
         // $ANTLR start "shiftExpression"
 9622  
         // org/argouml/language/java/reveng/Java.g:1444:1: shiftExpression : additiveExpression ( shiftOp additiveExpression )* ;
 9623  
         public final void shiftExpression() throws RecognitionException {
 9624  133
                 int shiftExpression_StartIndex = input.index();
 9625  
 
 9626  
                 try {
 9627  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 118) ) { return; }
 9628  
 
 9629  
                         // org/argouml/language/java/reveng/Java.g:1445:5: ( additiveExpression ( shiftOp additiveExpression )* )
 9630  
                         // org/argouml/language/java/reveng/Java.g:1445:9: additiveExpression ( shiftOp additiveExpression )*
 9631  
                         {
 9632  133
                         pushFollow(FOLLOW_additiveExpression_in_shiftExpression6517);
 9633  133
                         additiveExpression();
 9634  133
                         state._fsp--;
 9635  133
                         if (state.failed) return;
 9636  
                         // org/argouml/language/java/reveng/Java.g:1445:28: ( shiftOp additiveExpression )*
 9637  
                         loop139:
 9638  
                         while (true) {
 9639  133
                                 int alt139=2;
 9640  133
                                 alt139 = dfa139.predict(input);
 9641  133
                                 switch (alt139) {
 9642  
                                 case 1 :
 9643  
                                         // org/argouml/language/java/reveng/Java.g:1445:30: shiftOp additiveExpression
 9644  
                                         {
 9645  0
                                         pushFollow(FOLLOW_shiftOp_in_shiftExpression6521);
 9646  0
                                         shiftOp();
 9647  0
                                         state._fsp--;
 9648  0
                                         if (state.failed) return;
 9649  0
                                         pushFollow(FOLLOW_additiveExpression_in_shiftExpression6523);
 9650  0
                                         additiveExpression();
 9651  0
                                         state._fsp--;
 9652  0
                                         if (state.failed) return;
 9653  
                                         }
 9654  
                                         break;
 9655  
 
 9656  
                                 default :
 9657  133
                                         break loop139;
 9658  
                                 }
 9659  0
                         }
 9660  
 
 9661  
                         }
 9662  
 
 9663  
                 }
 9664  0
                 catch (RecognitionException re) {
 9665  0
                         reportError(re);
 9666  0
                         recover(input,re);
 9667  
                 }
 9668  
                 finally {
 9669  
                         // do for sure before leaving
 9670  133
                         if ( state.backtracking>0 ) { memoize(input, 118, shiftExpression_StartIndex); }
 9671  
 
 9672  0
                 }
 9673  133
         }
 9674  
         // $ANTLR end "shiftExpression"
 9675  
 
 9676  
 
 9677  
 
 9678  
         // $ANTLR start "shiftOp"
 9679  
         // org/argouml/language/java/reveng/Java.g:1448:1: shiftOp : ( ( '<' '<' )=>t1= '<' t2= '<' {...}?| ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}?| ( '>' '>' )=>t1= '>' t2= '>' {...}?);
 9680  
         public final void shiftOp() throws RecognitionException {
 9681  0
                 int shiftOp_StartIndex = input.index();
 9682  
 
 9683  0
                 Token t1=null;
 9684  0
                 Token t2=null;
 9685  0
                 Token t3=null;
 9686  
 
 9687  
                 try {
 9688  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 119) ) { return; }
 9689  
 
 9690  
                         // org/argouml/language/java/reveng/Java.g:1449:5: ( ( '<' '<' )=>t1= '<' t2= '<' {...}?| ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}?| ( '>' '>' )=>t1= '>' t2= '>' {...}?)
 9691  0
                         int alt140=3;
 9692  0
                         int LA140_0 = input.LA(1);
 9693  0
                         if ( (LA140_0==51) && (synpred216_Java())) {
 9694  0
                                 alt140=1;
 9695  
                         }
 9696  0
                         else if ( (LA140_0==54) ) {
 9697  0
                                 int LA140_2 = input.LA(2);
 9698  0
                                 if ( (LA140_2==54) ) {
 9699  0
                                         int LA140_3 = input.LA(3);
 9700  0
                                         if ( (synpred217_Java()) ) {
 9701  0
                                                 alt140=2;
 9702  
                                         }
 9703  0
                                         else if ( (synpred218_Java()) ) {
 9704  0
                                                 alt140=3;
 9705  
                                         }
 9706  
 
 9707  
                                         else {
 9708  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9709  0
                                                 int nvaeMark = input.mark();
 9710  
                                                 try {
 9711  0
                                                         for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
 9712  0
                                                                 input.consume();
 9713  
                                                         }
 9714  0
                                                         NoViableAltException nvae =
 9715  
                                                                 new NoViableAltException("", 140, 3, input);
 9716  0
                                                         throw nvae;
 9717  
                                                 } finally {
 9718  0
                                                         input.rewind(nvaeMark);
 9719  0
                                                 }
 9720  
                                         }
 9721  
 
 9722  0
                                 }
 9723  
 
 9724  
                                 else {
 9725  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 9726  0
                                         int nvaeMark = input.mark();
 9727  
                                         try {
 9728  0
                                                 input.consume();
 9729  0
                                                 NoViableAltException nvae =
 9730  
                                                         new NoViableAltException("", 140, 2, input);
 9731  0
                                                 throw nvae;
 9732  
                                         } finally {
 9733  0
                                                 input.rewind(nvaeMark);
 9734  0
                                         }
 9735  
                                 }
 9736  
 
 9737  0
                         }
 9738  
 
 9739  
                         else {
 9740  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 9741  0
                                 NoViableAltException nvae =
 9742  
                                         new NoViableAltException("", 140, 0, input);
 9743  0
                                 throw nvae;
 9744  
                         }
 9745  
 
 9746  0
                         switch (alt140) {
 9747  
                                 case 1 :
 9748  
                                         // org/argouml/language/java/reveng/Java.g:1449:9: ( '<' '<' )=>t1= '<' t2= '<' {...}?
 9749  
                                         {
 9750  0
                                         t1=(Token)match(input,51,FOLLOW_51_in_shiftOp6554); if (state.failed) return;
 9751  0
                                         t2=(Token)match(input,51,FOLLOW_51_in_shiftOp6558); if (state.failed) return;
 9752  0
                                         if ( !(( t1.getLine() == t2.getLine() && 
 9753  0
                                                   t1.getCharPositionInLine() + 1 == t2.getCharPositionInLine() )) ) {
 9754  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9755  0
                                                 throw new FailedPredicateException(input, "shiftOp", " $t1.getLine() == $t2.getLine() && \r\n          $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() ");
 9756  
                                         }
 9757  
                                         }
 9758  
                                         break;
 9759  
                                 case 2 :
 9760  
                                         // org/argouml/language/java/reveng/Java.g:1452:9: ( '>' '>' '>' )=>t1= '>' t2= '>' t3= '>' {...}?
 9761  
                                         {
 9762  0
                                         t1=(Token)match(input,54,FOLLOW_54_in_shiftOp6590); if (state.failed) return;
 9763  0
                                         t2=(Token)match(input,54,FOLLOW_54_in_shiftOp6594); if (state.failed) return;
 9764  0
                                         t3=(Token)match(input,54,FOLLOW_54_in_shiftOp6598); if (state.failed) return;
 9765  0
                                         if ( !(( t1.getLine() == t2.getLine() && 
 9766  0
                                                   t1.getCharPositionInLine() + 1 == t2.getCharPositionInLine() &&
 9767  0
                                                   t2.getLine() == t3.getLine() && 
 9768  0
                                                   t2.getCharPositionInLine() + 1 == t3.getCharPositionInLine() )) ) {
 9769  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9770  0
                                                 throw new FailedPredicateException(input, "shiftOp", " $t1.getLine() == $t2.getLine() && \r\n          $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&\r\n          $t2.getLine() == $t3.getLine() && \r\n          $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() ");
 9771  
                                         }
 9772  
                                         }
 9773  
                                         break;
 9774  
                                 case 3 :
 9775  
                                         // org/argouml/language/java/reveng/Java.g:1457:9: ( '>' '>' )=>t1= '>' t2= '>' {...}?
 9776  
                                         {
 9777  0
                                         t1=(Token)match(input,54,FOLLOW_54_in_shiftOp6628); if (state.failed) return;
 9778  0
                                         t2=(Token)match(input,54,FOLLOW_54_in_shiftOp6632); if (state.failed) return;
 9779  0
                                         if ( !(( t1.getLine() == t2.getLine() && 
 9780  0
                                                   t1.getCharPositionInLine() + 1 == t2.getCharPositionInLine() )) ) {
 9781  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9782  0
                                                 throw new FailedPredicateException(input, "shiftOp", " $t1.getLine() == $t2.getLine() && \r\n          $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() ");
 9783  
                                         }
 9784  
                                         }
 9785  
                                         break;
 9786  
 
 9787  
                         }
 9788  
                 }
 9789  0
                 catch (RecognitionException re) {
 9790  0
                         reportError(re);
 9791  0
                         recover(input,re);
 9792  
                 }
 9793  
                 finally {
 9794  
                         // do for sure before leaving
 9795  0
                         if ( state.backtracking>0 ) { memoize(input, 119, shiftOp_StartIndex); }
 9796  
 
 9797  0
                 }
 9798  0
         }
 9799  
         // $ANTLR end "shiftOp"
 9800  
 
 9801  
 
 9802  
 
 9803  
         // $ANTLR start "additiveExpression"
 9804  
         // org/argouml/language/java/reveng/Java.g:1463:1: additiveExpression : multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* ;
 9805  
         public final void additiveExpression() throws RecognitionException {
 9806  133
                 int additiveExpression_StartIndex = input.index();
 9807  
 
 9808  
                 try {
 9809  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 120) ) { return; }
 9810  
 
 9811  
                         // org/argouml/language/java/reveng/Java.g:1464:5: ( multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )* )
 9812  
                         // org/argouml/language/java/reveng/Java.g:1464:9: multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )*
 9813  
                         {
 9814  133
                         pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression6662);
 9815  133
                         multiplicativeExpression();
 9816  133
                         state._fsp--;
 9817  133
                         if (state.failed) return;
 9818  
                         // org/argouml/language/java/reveng/Java.g:1464:34: ( ( '+' | '-' ) multiplicativeExpression )*
 9819  
                         loop141:
 9820  
                         while (true) {
 9821  133
                                 int alt141=2;
 9822  133
                                 int LA141_0 = input.LA(1);
 9823  133
                                 if ( (LA141_0==38||LA141_0==42) ) {
 9824  0
                                         alt141=1;
 9825  
                                 }
 9826  
 
 9827  133
                                 switch (alt141) {
 9828  
                                 case 1 :
 9829  
                                         // org/argouml/language/java/reveng/Java.g:1464:36: ( '+' | '-' ) multiplicativeExpression
 9830  
                                         {
 9831  0
                                         if ( input.LA(1)==38||input.LA(1)==42 ) {
 9832  0
                                                 input.consume();
 9833  0
                                                 state.errorRecovery=false;
 9834  0
                                                 state.failed=false;
 9835  
                                         }
 9836  
                                         else {
 9837  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9838  0
                                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 9839  0
                                                 throw mse;
 9840  
                                         }
 9841  0
                                         pushFollow(FOLLOW_multiplicativeExpression_in_additiveExpression6674);
 9842  0
                                         multiplicativeExpression();
 9843  0
                                         state._fsp--;
 9844  0
                                         if (state.failed) return;
 9845  
                                         }
 9846  
                                         break;
 9847  
 
 9848  
                                 default :
 9849  133
                                         break loop141;
 9850  
                                 }
 9851  0
                         }
 9852  
 
 9853  
                         }
 9854  
 
 9855  
                 }
 9856  0
                 catch (RecognitionException re) {
 9857  0
                         reportError(re);
 9858  0
                         recover(input,re);
 9859  
                 }
 9860  
                 finally {
 9861  
                         // do for sure before leaving
 9862  133
                         if ( state.backtracking>0 ) { memoize(input, 120, additiveExpression_StartIndex); }
 9863  
 
 9864  0
                 }
 9865  133
         }
 9866  
         // $ANTLR end "additiveExpression"
 9867  
 
 9868  
 
 9869  
 
 9870  
         // $ANTLR start "multiplicativeExpression"
 9871  
         // org/argouml/language/java/reveng/Java.g:1467:1: multiplicativeExpression : unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* ;
 9872  
         public final void multiplicativeExpression() throws RecognitionException {
 9873  133
                 int multiplicativeExpression_StartIndex = input.index();
 9874  
 
 9875  
                 try {
 9876  133
                         if ( state.backtracking>0 && alreadyParsedRule(input, 121) ) { return; }
 9877  
 
 9878  
                         // org/argouml/language/java/reveng/Java.g:1468:5: ( unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )* )
 9879  
                         // org/argouml/language/java/reveng/Java.g:1468:9: unaryExpression ( ( '*' | '/' | '%' ) unaryExpression )*
 9880  
                         {
 9881  133
                         pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression6696);
 9882  133
                         unaryExpression();
 9883  133
                         state._fsp--;
 9884  133
                         if (state.failed) return;
 9885  
                         // org/argouml/language/java/reveng/Java.g:1468:25: ( ( '*' | '/' | '%' ) unaryExpression )*
 9886  
                         loop142:
 9887  
                         while (true) {
 9888  133
                                 int alt142=2;
 9889  133
                                 int LA142_0 = input.LA(1);
 9890  133
                                 if ( (LA142_0==29||LA142_0==36||LA142_0==47) ) {
 9891  0
                                         alt142=1;
 9892  
                                 }
 9893  
 
 9894  133
                                 switch (alt142) {
 9895  
                                 case 1 :
 9896  
                                         // org/argouml/language/java/reveng/Java.g:1468:27: ( '*' | '/' | '%' ) unaryExpression
 9897  
                                         {
 9898  0
                                         if ( input.LA(1)==29||input.LA(1)==36||input.LA(1)==47 ) {
 9899  0
                                                 input.consume();
 9900  0
                                                 state.errorRecovery=false;
 9901  0
                                                 state.failed=false;
 9902  
                                         }
 9903  
                                         else {
 9904  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 9905  0
                                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 9906  0
                                                 throw mse;
 9907  
                                         }
 9908  0
                                         pushFollow(FOLLOW_unaryExpression_in_multiplicativeExpression6714);
 9909  0
                                         unaryExpression();
 9910  0
                                         state._fsp--;
 9911  0
                                         if (state.failed) return;
 9912  
                                         }
 9913  
                                         break;
 9914  
 
 9915  
                                 default :
 9916  133
                                         break loop142;
 9917  
                                 }
 9918  0
                         }
 9919  
 
 9920  
                         }
 9921  
 
 9922  
                 }
 9923  0
                 catch (RecognitionException re) {
 9924  0
                         reportError(re);
 9925  0
                         recover(input,re);
 9926  
                 }
 9927  
                 finally {
 9928  
                         // do for sure before leaving
 9929  133
                         if ( state.backtracking>0 ) { memoize(input, 121, multiplicativeExpression_StartIndex); }
 9930  
 
 9931  0
                 }
 9932  133
         }
 9933  
         // $ANTLR end "multiplicativeExpression"
 9934  
 
 9935  
 
 9936  
 
 9937  
         // $ANTLR start "unaryExpression"
 9938  
         // org/argouml/language/java/reveng/Java.g:1471:1: unaryExpression : ( '+' unaryExpression | '-' unaryExpression | '++' unaryExpression | '--' unaryExpression | unaryExpressionNotPlusMinus );
 9939  
         public final void unaryExpression() throws RecognitionException {
 9940  157
                 int unaryExpression_StartIndex = input.index();
 9941  
 
 9942  
                 try {
 9943  169
                         if ( state.backtracking>0 && alreadyParsedRule(input, 122) ) { return; }
 9944  
 
 9945  
                         // org/argouml/language/java/reveng/Java.g:1472:5: ( '+' unaryExpression | '-' unaryExpression | '++' unaryExpression | '--' unaryExpression | unaryExpressionNotPlusMinus )
 9946  145
                         int alt143=5;
 9947  145
                         switch ( input.LA(1) ) {
 9948  
                         case 38:
 9949  
                                 {
 9950  0
                                 alt143=1;
 9951  
                                 }
 9952  0
                                 break;
 9953  
                         case 42:
 9954  
                                 {
 9955  0
                                 alt143=2;
 9956  
                                 }
 9957  0
                                 break;
 9958  
                         case 39:
 9959  
                                 {
 9960  0
                                 alt143=3;
 9961  
                                 }
 9962  0
                                 break;
 9963  
                         case 43:
 9964  
                                 {
 9965  0
                                 alt143=4;
 9966  
                                 }
 9967  0
                                 break;
 9968  
                         case CharacterLiteral:
 9969  
                         case DecimalLiteral:
 9970  
                         case FloatingPointLiteral:
 9971  
                         case HexLiteral:
 9972  
                         case Identifier:
 9973  
                         case OctalLiteral:
 9974  
                         case StringLiteral:
 9975  
                         case 27:
 9976  
                         case 34:
 9977  
                         case 62:
 9978  
                         case 64:
 9979  
                         case 67:
 9980  
                         case 72:
 9981  
                         case 75:
 9982  
                         case 78:
 9983  
                         case 84:
 9984  
                         case 86:
 9985  
                         case 88:
 9986  
                         case 89:
 9987  
                         case 95:
 9988  
                         case 98:
 9989  
                         case 101:
 9990  
                         case 105:
 9991  
                         case 107:
 9992  
                         case 115:
 9993  
                                 {
 9994  145
                                 alt143=5;
 9995  
                                 }
 9996  145
                                 break;
 9997  
                         default:
 9998  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 9999  0
                                 NoViableAltException nvae =
 10000  
                                         new NoViableAltException("", 143, 0, input);
 10001  0
                                 throw nvae;
 10002  
                         }
 10003  145
                         switch (alt143) {
 10004  
                                 case 1 :
 10005  
                                         // org/argouml/language/java/reveng/Java.g:1472:9: '+' unaryExpression
 10006  
                                         {
 10007  0
                                         match(input,38,FOLLOW_38_in_unaryExpression6740); if (state.failed) return;
 10008  0
                                         pushFollow(FOLLOW_unaryExpression_in_unaryExpression6742);
 10009  0
                                         unaryExpression();
 10010  0
                                         state._fsp--;
 10011  0
                                         if (state.failed) return;
 10012  
                                         }
 10013  
                                         break;
 10014  
                                 case 2 :
 10015  
                                         // org/argouml/language/java/reveng/Java.g:1473:9: '-' unaryExpression
 10016  
                                         {
 10017  0
                                         match(input,42,FOLLOW_42_in_unaryExpression6752); if (state.failed) return;
 10018  0
                                         pushFollow(FOLLOW_unaryExpression_in_unaryExpression6754);
 10019  0
                                         unaryExpression();
 10020  0
                                         state._fsp--;
 10021  0
                                         if (state.failed) return;
 10022  
                                         }
 10023  
                                         break;
 10024  
                                 case 3 :
 10025  
                                         // org/argouml/language/java/reveng/Java.g:1474:9: '++' unaryExpression
 10026  
                                         {
 10027  0
                                         match(input,39,FOLLOW_39_in_unaryExpression6764); if (state.failed) return;
 10028  0
                                         pushFollow(FOLLOW_unaryExpression_in_unaryExpression6766);
 10029  0
                                         unaryExpression();
 10030  0
                                         state._fsp--;
 10031  0
                                         if (state.failed) return;
 10032  
                                         }
 10033  
                                         break;
 10034  
                                 case 4 :
 10035  
                                         // org/argouml/language/java/reveng/Java.g:1475:9: '--' unaryExpression
 10036  
                                         {
 10037  0
                                         match(input,43,FOLLOW_43_in_unaryExpression6776); if (state.failed) return;
 10038  0
                                         pushFollow(FOLLOW_unaryExpression_in_unaryExpression6778);
 10039  0
                                         unaryExpression();
 10040  0
                                         state._fsp--;
 10041  0
                                         if (state.failed) return;
 10042  
                                         }
 10043  
                                         break;
 10044  
                                 case 5 :
 10045  
                                         // org/argouml/language/java/reveng/Java.g:1476:9: unaryExpressionNotPlusMinus
 10046  
                                         {
 10047  145
                                         pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression6788);
 10048  145
                                         unaryExpressionNotPlusMinus();
 10049  145
                                         state._fsp--;
 10050  145
                                         if (state.failed) return;
 10051  
                                         }
 10052  
                                         break;
 10053  
 
 10054  
                         }
 10055  
                 }
 10056  0
                 catch (RecognitionException re) {
 10057  0
                         reportError(re);
 10058  0
                         recover(input,re);
 10059  
                 }
 10060  
                 finally {
 10061  
                         // do for sure before leaving
 10062  157
                         if ( state.backtracking>0 ) { memoize(input, 122, unaryExpression_StartIndex); }
 10063  
 
 10064  0
                 }
 10065  145
         }
 10066  
         // $ANTLR end "unaryExpression"
 10067  
 
 10068  
 
 10069  
 
 10070  
         // $ANTLR start "unaryExpressionNotPlusMinus"
 10071  
         // org/argouml/language/java/reveng/Java.g:1479:1: unaryExpressionNotPlusMinus : ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? );
 10072  
         public final void unaryExpressionNotPlusMinus() throws RecognitionException {
 10073  169
                 int unaryExpressionNotPlusMinus_StartIndex = input.index();
 10074  
 
 10075  
                 try {
 10076  169
                         if ( state.backtracking>0 && alreadyParsedRule(input, 123) ) { return; }
 10077  
 
 10078  
                         // org/argouml/language/java/reveng/Java.g:1480:5: ( '~' unaryExpression | '!' unaryExpression | castExpression | primary ( selector )* ( '++' | '--' )? )
 10079  169
                         int alt146=4;
 10080  169
                         switch ( input.LA(1) ) {
 10081  
                         case 115:
 10082  
                                 {
 10083  0
                                 alt146=1;
 10084  
                                 }
 10085  0
                                 break;
 10086  
                         case 27:
 10087  
                                 {
 10088  0
                                 alt146=2;
 10089  
                                 }
 10090  0
                                 break;
 10091  
                         case 34:
 10092  
                                 {
 10093  30
                                 switch ( input.LA(2) ) {
 10094  
                                 case 62:
 10095  
                                 case 64:
 10096  
                                 case 67:
 10097  
                                 case 72:
 10098  
                                 case 78:
 10099  
                                 case 84:
 10100  
                                 case 86:
 10101  
                                 case 95:
 10102  
                                         {
 10103  6
                                         int LA146_16 = input.LA(3);
 10104  6
                                         if ( (synpred230_Java()) ) {
 10105  6
                                                 alt146=3;
 10106  
                                         }
 10107  
                                         else if ( (true) ) {
 10108  0
                                                 alt146=4;
 10109  
                                         }
 10110  
 
 10111  
                                         }
 10112  6
                                         break;
 10113  
                                 case Identifier:
 10114  
                                         {
 10115  24
                                         int LA146_17 = input.LA(3);
 10116  24
                                         if ( (synpred230_Java()) ) {
 10117  24
                                                 alt146=3;
 10118  
                                         }
 10119  
                                         else if ( (true) ) {
 10120  0
                                                 alt146=4;
 10121  
                                         }
 10122  
 
 10123  
                                         }
 10124  24
                                         break;
 10125  
                                 case 38:
 10126  
                                         {
 10127  0
                                         int LA146_18 = input.LA(3);
 10128  0
                                         if ( (synpred230_Java()) ) {
 10129  0
                                                 alt146=3;
 10130  
                                         }
 10131  
                                         else if ( (true) ) {
 10132  0
                                                 alt146=4;
 10133  
                                         }
 10134  
 
 10135  
                                         }
 10136  0
                                         break;
 10137  
                                 case 42:
 10138  
                                         {
 10139  0
                                         int LA146_19 = input.LA(3);
 10140  0
                                         if ( (synpred230_Java()) ) {
 10141  0
                                                 alt146=3;
 10142  
                                         }
 10143  
                                         else if ( (true) ) {
 10144  0
                                                 alt146=4;
 10145  
                                         }
 10146  
 
 10147  
                                         }
 10148  0
                                         break;
 10149  
                                 case 39:
 10150  
                                         {
 10151  0
                                         int LA146_20 = input.LA(3);
 10152  0
                                         if ( (synpred230_Java()) ) {
 10153  0
                                                 alt146=3;
 10154  
                                         }
 10155  
                                         else if ( (true) ) {
 10156  0
                                                 alt146=4;
 10157  
                                         }
 10158  
 
 10159  
                                         }
 10160  0
                                         break;
 10161  
                                 case 43:
 10162  
                                         {
 10163  0
                                         int LA146_21 = input.LA(3);
 10164  0
                                         if ( (synpred230_Java()) ) {
 10165  0
                                                 alt146=3;
 10166  
                                         }
 10167  
                                         else if ( (true) ) {
 10168  0
                                                 alt146=4;
 10169  
                                         }
 10170  
 
 10171  
                                         }
 10172  0
                                         break;
 10173  
                                 case 115:
 10174  
                                         {
 10175  0
                                         int LA146_22 = input.LA(3);
 10176  0
                                         if ( (synpred230_Java()) ) {
 10177  0
                                                 alt146=3;
 10178  
                                         }
 10179  
                                         else if ( (true) ) {
 10180  0
                                                 alt146=4;
 10181  
                                         }
 10182  
 
 10183  
                                         }
 10184  0
                                         break;
 10185  
                                 case 27:
 10186  
                                         {
 10187  0
                                         int LA146_23 = input.LA(3);
 10188  0
                                         if ( (synpred230_Java()) ) {
 10189  0
                                                 alt146=3;
 10190  
                                         }
 10191  
                                         else if ( (true) ) {
 10192  0
                                                 alt146=4;
 10193  
                                         }
 10194  
 
 10195  
                                         }
 10196  0
                                         break;
 10197  
                                 case 34:
 10198  
                                         {
 10199  0
                                         int LA146_24 = input.LA(3);
 10200  0
                                         if ( (synpred230_Java()) ) {
 10201  0
                                                 alt146=3;
 10202  
                                         }
 10203  
                                         else if ( (true) ) {
 10204  0
                                                 alt146=4;
 10205  
                                         }
 10206  
 
 10207  
                                         }
 10208  0
                                         break;
 10209  
                                 case 101:
 10210  
                                         {
 10211  0
                                         int LA146_25 = input.LA(3);
 10212  0
                                         if ( (synpred230_Java()) ) {
 10213  0
                                                 alt146=3;
 10214  
                                         }
 10215  
                                         else if ( (true) ) {
 10216  0
                                                 alt146=4;
 10217  
                                         }
 10218  
 
 10219  
                                         }
 10220  0
                                         break;
 10221  
                                 case 98:
 10222  
                                         {
 10223  0
                                         int LA146_26 = input.LA(3);
 10224  0
                                         if ( (synpred230_Java()) ) {
 10225  0
                                                 alt146=3;
 10226  
                                         }
 10227  
                                         else if ( (true) ) {
 10228  0
                                                 alt146=4;
 10229  
                                         }
 10230  
 
 10231  
                                         }
 10232  0
                                         break;
 10233  
                                 case DecimalLiteral:
 10234  
                                 case HexLiteral:
 10235  
                                 case OctalLiteral:
 10236  
                                         {
 10237  0
                                         int LA146_27 = input.LA(3);
 10238  0
                                         if ( (synpred230_Java()) ) {
 10239  0
                                                 alt146=3;
 10240  
                                         }
 10241  
                                         else if ( (true) ) {
 10242  0
                                                 alt146=4;
 10243  
                                         }
 10244  
 
 10245  
                                         }
 10246  0
                                         break;
 10247  
                                 case FloatingPointLiteral:
 10248  
                                         {
 10249  0
                                         int LA146_28 = input.LA(3);
 10250  0
                                         if ( (synpred230_Java()) ) {
 10251  0
                                                 alt146=3;
 10252  
                                         }
 10253  
                                         else if ( (true) ) {
 10254  0
                                                 alt146=4;
 10255  
                                         }
 10256  
 
 10257  
                                         }
 10258  0
                                         break;
 10259  
                                 case CharacterLiteral:
 10260  
                                         {
 10261  0
                                         int LA146_29 = input.LA(3);
 10262  0
                                         if ( (synpred230_Java()) ) {
 10263  0
                                                 alt146=3;
 10264  
                                         }
 10265  
                                         else if ( (true) ) {
 10266  0
                                                 alt146=4;
 10267  
                                         }
 10268  
 
 10269  
                                         }
 10270  0
                                         break;
 10271  
                                 case StringLiteral:
 10272  
                                         {
 10273  0
                                         int LA146_30 = input.LA(3);
 10274  0
                                         if ( (synpred230_Java()) ) {
 10275  0
                                                 alt146=3;
 10276  
                                         }
 10277  
                                         else if ( (true) ) {
 10278  0
                                                 alt146=4;
 10279  
                                         }
 10280  
 
 10281  
                                         }
 10282  0
                                         break;
 10283  
                                 case 75:
 10284  
                                 case 105:
 10285  
                                         {
 10286  0
                                         int LA146_31 = input.LA(3);
 10287  0
                                         if ( (synpred230_Java()) ) {
 10288  0
                                                 alt146=3;
 10289  
                                         }
 10290  
                                         else if ( (true) ) {
 10291  0
                                                 alt146=4;
 10292  
                                         }
 10293  
 
 10294  
                                         }
 10295  0
                                         break;
 10296  
                                 case 89:
 10297  
                                         {
 10298  0
                                         int LA146_32 = input.LA(3);
 10299  0
                                         if ( (synpred230_Java()) ) {
 10300  0
                                                 alt146=3;
 10301  
                                         }
 10302  
                                         else if ( (true) ) {
 10303  0
                                                 alt146=4;
 10304  
                                         }
 10305  
 
 10306  
                                         }
 10307  0
                                         break;
 10308  
                                 case 88:
 10309  
                                         {
 10310  0
                                         int LA146_33 = input.LA(3);
 10311  0
                                         if ( (synpred230_Java()) ) {
 10312  0
                                                 alt146=3;
 10313  
                                         }
 10314  
                                         else if ( (true) ) {
 10315  0
                                                 alt146=4;
 10316  
                                         }
 10317  
 
 10318  
                                         }
 10319  0
                                         break;
 10320  
                                 case 107:
 10321  
                                         {
 10322  0
                                         int LA146_34 = input.LA(3);
 10323  0
                                         if ( (synpred230_Java()) ) {
 10324  0
                                                 alt146=3;
 10325  
                                         }
 10326  
                                         else if ( (true) ) {
 10327  0
                                                 alt146=4;
 10328  
                                         }
 10329  
 
 10330  
                                         }
 10331  0
                                         break;
 10332  
                                 default:
 10333  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 10334  0
                                         int nvaeMark = input.mark();
 10335  
                                         try {
 10336  0
                                                 input.consume();
 10337  0
                                                 NoViableAltException nvae =
 10338  
                                                         new NoViableAltException("", 146, 3, input);
 10339  0
                                                 throw nvae;
 10340  
                                         } finally {
 10341  0
                                                 input.rewind(nvaeMark);
 10342  0
                                         }
 10343  
                                 }
 10344  
                                 }
 10345  30
                                 break;
 10346  
                         case CharacterLiteral:
 10347  
                         case DecimalLiteral:
 10348  
                         case FloatingPointLiteral:
 10349  
                         case HexLiteral:
 10350  
                         case Identifier:
 10351  
                         case OctalLiteral:
 10352  
                         case StringLiteral:
 10353  
                         case 62:
 10354  
                         case 64:
 10355  
                         case 67:
 10356  
                         case 72:
 10357  
                         case 75:
 10358  
                         case 78:
 10359  
                         case 84:
 10360  
                         case 86:
 10361  
                         case 88:
 10362  
                         case 89:
 10363  
                         case 95:
 10364  
                         case 98:
 10365  
                         case 101:
 10366  
                         case 105:
 10367  
                         case 107:
 10368  
                                 {
 10369  139
                                 alt146=4;
 10370  
                                 }
 10371  139
                                 break;
 10372  
                         default:
 10373  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 10374  0
                                 NoViableAltException nvae =
 10375  
                                         new NoViableAltException("", 146, 0, input);
 10376  0
                                 throw nvae;
 10377  
                         }
 10378  169
                         switch (alt146) {
 10379  
                                 case 1 :
 10380  
                                         // org/argouml/language/java/reveng/Java.g:1480:9: '~' unaryExpression
 10381  
                                         {
 10382  0
                                         match(input,115,FOLLOW_115_in_unaryExpressionNotPlusMinus6807); if (state.failed) return;
 10383  0
                                         pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus6809);
 10384  0
                                         unaryExpression();
 10385  0
                                         state._fsp--;
 10386  0
                                         if (state.failed) return;
 10387  
                                         }
 10388  
                                         break;
 10389  
                                 case 2 :
 10390  
                                         // org/argouml/language/java/reveng/Java.g:1481:9: '!' unaryExpression
 10391  
                                         {
 10392  0
                                         match(input,27,FOLLOW_27_in_unaryExpressionNotPlusMinus6819); if (state.failed) return;
 10393  0
                                         pushFollow(FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus6821);
 10394  0
                                         unaryExpression();
 10395  0
                                         state._fsp--;
 10396  0
                                         if (state.failed) return;
 10397  
                                         }
 10398  
                                         break;
 10399  
                                 case 3 :
 10400  
                                         // org/argouml/language/java/reveng/Java.g:1482:9: castExpression
 10401  
                                         {
 10402  30
                                         pushFollow(FOLLOW_castExpression_in_unaryExpressionNotPlusMinus6831);
 10403  30
                                         castExpression();
 10404  30
                                         state._fsp--;
 10405  30
                                         if (state.failed) return;
 10406  
                                         }
 10407  
                                         break;
 10408  
                                 case 4 :
 10409  
                                         // org/argouml/language/java/reveng/Java.g:1483:9: primary ( selector )* ( '++' | '--' )?
 10410  
                                         {
 10411  139
                                         pushFollow(FOLLOW_primary_in_unaryExpressionNotPlusMinus6841);
 10412  139
                                         primary();
 10413  139
                                         state._fsp--;
 10414  139
                                         if (state.failed) return;
 10415  
                                         // org/argouml/language/java/reveng/Java.g:1483:17: ( selector )*
 10416  
                                         loop144:
 10417  
                                         while (true) {
 10418  139
                                                 int alt144=2;
 10419  139
                                                 int LA144_0 = input.LA(1);
 10420  139
                                                 if ( (LA144_0==45||LA144_0==57) ) {
 10421  0
                                                         alt144=1;
 10422  
                                                 }
 10423  
 
 10424  139
                                                 switch (alt144) {
 10425  
                                                 case 1 :
 10426  
                                                         // org/argouml/language/java/reveng/Java.g:1483:17: selector
 10427  
                                                         {
 10428  0
                                                         pushFollow(FOLLOW_selector_in_unaryExpressionNotPlusMinus6843);
 10429  0
                                                         selector();
 10430  0
                                                         state._fsp--;
 10431  0
                                                         if (state.failed) return;
 10432  
                                                         }
 10433  
                                                         break;
 10434  
 
 10435  
                                                 default :
 10436  139
                                                         break loop144;
 10437  
                                                 }
 10438  0
                                         }
 10439  
 
 10440  
                                         // org/argouml/language/java/reveng/Java.g:1483:27: ( '++' | '--' )?
 10441  139
                                         int alt145=2;
 10442  139
                                         int LA145_0 = input.LA(1);
 10443  139
                                         if ( (LA145_0==39||LA145_0==43) ) {
 10444  0
                                                 alt145=1;
 10445  
                                         }
 10446  139
                                         switch (alt145) {
 10447  
                                                 case 1 :
 10448  
                                                         // org/argouml/language/java/reveng/Java.g:
 10449  
                                                         {
 10450  0
                                                         if ( input.LA(1)==39||input.LA(1)==43 ) {
 10451  0
                                                                 input.consume();
 10452  0
                                                                 state.errorRecovery=false;
 10453  0
                                                                 state.failed=false;
 10454  
                                                         }
 10455  
                                                         else {
 10456  0
                                                                 if (state.backtracking>0) {state.failed=true; return;}
 10457  0
                                                                 MismatchedSetException mse = new MismatchedSetException(null,input);
 10458  0
                                                                 throw mse;
 10459  
                                                         }
 10460  
                                                         }
 10461  
                                                         break;
 10462  
 
 10463  
                                         }
 10464  
 
 10465  
                                         }
 10466  
                                         break;
 10467  
 
 10468  
                         }
 10469  
                 }
 10470  0
                 catch (RecognitionException re) {
 10471  0
                         reportError(re);
 10472  0
                         recover(input,re);
 10473  
                 }
 10474  
                 finally {
 10475  
                         // do for sure before leaving
 10476  169
                         if ( state.backtracking>0 ) { memoize(input, 123, unaryExpressionNotPlusMinus_StartIndex); }
 10477  
 
 10478  0
                 }
 10479  169
         }
 10480  
         // $ANTLR end "unaryExpressionNotPlusMinus"
 10481  
 
 10482  
 
 10483  
 
 10484  
         // $ANTLR start "castExpression"
 10485  
         // org/argouml/language/java/reveng/Java.g:1486:1: castExpression : ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus );
 10486  
         public final void castExpression() throws RecognitionException {
 10487  60
                 int castExpression_StartIndex = input.index();
 10488  
 
 10489  
                 try {
 10490  84
                         if ( state.backtracking>0 && alreadyParsedRule(input, 124) ) { return; }
 10491  
 
 10492  
                         // org/argouml/language/java/reveng/Java.g:1487:5: ( '(' primitiveType ')' unaryExpression | '(' ( type | expression ) ')' unaryExpressionNotPlusMinus )
 10493  36
                         int alt148=2;
 10494  36
                         int LA148_0 = input.LA(1);
 10495  36
                         if ( (LA148_0==34) ) {
 10496  36
                                 int LA148_1 = input.LA(2);
 10497  36
                                 if ( (LA148_1==62||LA148_1==64||LA148_1==67||LA148_1==72||LA148_1==78||LA148_1==84||LA148_1==86||LA148_1==95) ) {
 10498  12
                                         int LA148_2 = input.LA(3);
 10499  12
                                         if ( (synpred234_Java()) ) {
 10500  12
                                                 alt148=1;
 10501  
                                         }
 10502  
                                         else if ( (true) ) {
 10503  0
                                                 alt148=2;
 10504  
                                         }
 10505  
 
 10506  12
                                 }
 10507  24
                                 else if ( ((LA148_1 >= CharacterLiteral && LA148_1 <= DecimalLiteral)||LA148_1==FloatingPointLiteral||(LA148_1 >= HexLiteral && LA148_1 <= Identifier)||(LA148_1 >= OctalLiteral && LA148_1 <= StringLiteral)||LA148_1==27||LA148_1==34||(LA148_1 >= 38 && LA148_1 <= 39)||(LA148_1 >= 42 && LA148_1 <= 43)||LA148_1==75||(LA148_1 >= 88 && LA148_1 <= 89)||LA148_1==98||LA148_1==101||LA148_1==105||LA148_1==107||LA148_1==115) ) {
 10508  24
                                         alt148=2;
 10509  
                                 }
 10510  
 
 10511  
                                 else {
 10512  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 10513  0
                                         int nvaeMark = input.mark();
 10514  
                                         try {
 10515  0
                                                 input.consume();
 10516  0
                                                 NoViableAltException nvae =
 10517  
                                                         new NoViableAltException("", 148, 1, input);
 10518  0
                                                 throw nvae;
 10519  
                                         } finally {
 10520  0
                                                 input.rewind(nvaeMark);
 10521  0
                                         }
 10522  
                                 }
 10523  
 
 10524  36
                         }
 10525  
 
 10526  
                         else {
 10527  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 10528  0
                                 NoViableAltException nvae =
 10529  
                                         new NoViableAltException("", 148, 0, input);
 10530  0
                                 throw nvae;
 10531  
                         }
 10532  
 
 10533  36
                         switch (alt148) {
 10534  
                                 case 1 :
 10535  
                                         // org/argouml/language/java/reveng/Java.g:1487:8: '(' primitiveType ')' unaryExpression
 10536  
                                         {
 10537  12
                                         match(input,34,FOLLOW_34_in_castExpression6869); if (state.failed) return;
 10538  12
                                         pushFollow(FOLLOW_primitiveType_in_castExpression6871);
 10539  12
                                         primitiveType();
 10540  12
                                         state._fsp--;
 10541  12
                                         if (state.failed) return;
 10542  12
                                         match(input,35,FOLLOW_35_in_castExpression6873); if (state.failed) return;
 10543  12
                                         pushFollow(FOLLOW_unaryExpression_in_castExpression6875);
 10544  12
                                         unaryExpression();
 10545  12
                                         state._fsp--;
 10546  12
                                         if (state.failed) return;
 10547  
                                         }
 10548  
                                         break;
 10549  
                                 case 2 :
 10550  
                                         // org/argouml/language/java/reveng/Java.g:1488:8: '(' ( type | expression ) ')' unaryExpressionNotPlusMinus
 10551  
                                         {
 10552  24
                                         match(input,34,FOLLOW_34_in_castExpression6884); if (state.failed) return;
 10553  
                                         // org/argouml/language/java/reveng/Java.g:1488:12: ( type | expression )
 10554  24
                                         int alt147=2;
 10555  24
                                         switch ( input.LA(1) ) {
 10556  
                                         case Identifier:
 10557  
                                                 {
 10558  24
                                                 int LA147_1 = input.LA(2);
 10559  24
                                                 if ( (synpred235_Java()) ) {
 10560  24
                                                         alt147=1;
 10561  
                                                 }
 10562  
                                                 else if ( (true) ) {
 10563  0
                                                         alt147=2;
 10564  
                                                 }
 10565  
 
 10566  
                                                 }
 10567  24
                                                 break;
 10568  
                                         case 62:
 10569  
                                         case 64:
 10570  
                                         case 67:
 10571  
                                         case 72:
 10572  
                                         case 78:
 10573  
                                         case 84:
 10574  
                                         case 86:
 10575  
                                         case 95:
 10576  
                                                 {
 10577  0
                                                 switch ( input.LA(2) ) {
 10578  
                                                 case 57:
 10579  
                                                         {
 10580  0
                                                         int LA147_47 = input.LA(3);
 10581  0
                                                         if ( (synpred235_Java()) ) {
 10582  0
                                                                 alt147=1;
 10583  
                                                         }
 10584  
                                                         else if ( (true) ) {
 10585  0
                                                                 alt147=2;
 10586  
                                                         }
 10587  
 
 10588  
                                                         }
 10589  0
                                                         break;
 10590  
                                                 case 35:
 10591  
                                                         {
 10592  0
                                                         alt147=1;
 10593  
                                                         }
 10594  0
                                                         break;
 10595  
                                                 case 45:
 10596  
                                                         {
 10597  0
                                                         alt147=2;
 10598  
                                                         }
 10599  0
                                                         break;
 10600  
                                                 default:
 10601  0
                                                         if (state.backtracking>0) {state.failed=true; return;}
 10602  0
                                                         int nvaeMark = input.mark();
 10603  
                                                         try {
 10604  0
                                                                 input.consume();
 10605  0
                                                                 NoViableAltException nvae =
 10606  
                                                                         new NoViableAltException("", 147, 2, input);
 10607  0
                                                                 throw nvae;
 10608  
                                                         } finally {
 10609  0
                                                                 input.rewind(nvaeMark);
 10610  0
                                                         }
 10611  
                                                 }
 10612  
                                                 }
 10613  0
                                                 break;
 10614  
                                         case CharacterLiteral:
 10615  
                                         case DecimalLiteral:
 10616  
                                         case FloatingPointLiteral:
 10617  
                                         case HexLiteral:
 10618  
                                         case OctalLiteral:
 10619  
                                         case StringLiteral:
 10620  
                                         case 27:
 10621  
                                         case 34:
 10622  
                                         case 38:
 10623  
                                         case 39:
 10624  
                                         case 42:
 10625  
                                         case 43:
 10626  
                                         case 75:
 10627  
                                         case 88:
 10628  
                                         case 89:
 10629  
                                         case 98:
 10630  
                                         case 101:
 10631  
                                         case 105:
 10632  
                                         case 107:
 10633  
                                         case 115:
 10634  
                                                 {
 10635  0
                                                 alt147=2;
 10636  
                                                 }
 10637  0
                                                 break;
 10638  
                                         default:
 10639  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 10640  0
                                                 NoViableAltException nvae =
 10641  
                                                         new NoViableAltException("", 147, 0, input);
 10642  0
                                                 throw nvae;
 10643  
                                         }
 10644  24
                                         switch (alt147) {
 10645  
                                                 case 1 :
 10646  
                                                         // org/argouml/language/java/reveng/Java.g:1488:13: type
 10647  
                                                         {
 10648  24
                                                         pushFollow(FOLLOW_type_in_castExpression6887);
 10649  24
                                                         type();
 10650  24
                                                         state._fsp--;
 10651  24
                                                         if (state.failed) return;
 10652  
                                                         }
 10653  
                                                         break;
 10654  
                                                 case 2 :
 10655  
                                                         // org/argouml/language/java/reveng/Java.g:1488:20: expression
 10656  
                                                         {
 10657  0
                                                         pushFollow(FOLLOW_expression_in_castExpression6891);
 10658  0
                                                         expression();
 10659  0
                                                         state._fsp--;
 10660  0
                                                         if (state.failed) return;
 10661  
                                                         }
 10662  
                                                         break;
 10663  
 
 10664  
                                         }
 10665  
 
 10666  24
                                         match(input,35,FOLLOW_35_in_castExpression6894); if (state.failed) return;
 10667  24
                                         pushFollow(FOLLOW_unaryExpressionNotPlusMinus_in_castExpression6896);
 10668  24
                                         unaryExpressionNotPlusMinus();
 10669  24
                                         state._fsp--;
 10670  24
                                         if (state.failed) return;
 10671  
                                         }
 10672  
                                         break;
 10673  
 
 10674  
                         }
 10675  
                 }
 10676  0
                 catch (RecognitionException re) {
 10677  0
                         reportError(re);
 10678  0
                         recover(input,re);
 10679  
                 }
 10680  
                 finally {
 10681  
                         // do for sure before leaving
 10682  60
                         if ( state.backtracking>0 ) { memoize(input, 124, castExpression_StartIndex); }
 10683  
 
 10684  0
                 }
 10685  36
         }
 10686  
         // $ANTLR end "castExpression"
 10687  
 
 10688  
 
 10689  
 
 10690  
         // $ANTLR start "primary"
 10691  
         // org/argouml/language/java/reveng/Java.g:1491:1: primary : ( parExpression | 'this' ( '.' id= Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator |id= Identifier ( '.' id= Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' );
 10692  
         public final void primary() throws RecognitionException {
 10693  148
                 int primary_StartIndex = input.index();
 10694  
 
 10695  148
                 Token id=null;
 10696  
 
 10697  
 
 10698  148
                         String name = null;
 10699  148
                         boolean parenths = false; //LA(1) == LPAREN;
 10700  
                     
 10701  
                 try {
 10702  148
                         if ( state.backtracking>0 && alreadyParsedRule(input, 125) ) { return; }
 10703  
 
 10704  
                         // org/argouml/language/java/reveng/Java.g:1496:5: ( parExpression | 'this' ( '.' id= Identifier )* ( identifierSuffix )? | 'super' superSuffix | literal | 'new' creator |id= Identifier ( '.' id= Identifier )* ( identifierSuffix )? | primitiveType ( '[' ']' )* '.' 'class' | 'void' '.' 'class' )
 10705  148
                         int alt154=8;
 10706  148
                         switch ( input.LA(1) ) {
 10707  
                         case 34:
 10708  
                                 {
 10709  0
                                 alt154=1;
 10710  
                                 }
 10711  0
                                 break;
 10712  
                         case 101:
 10713  
                                 {
 10714  20
                                 alt154=2;
 10715  
                                 }
 10716  20
                                 break;
 10717  
                         case 98:
 10718  
                                 {
 10719  0
                                 alt154=3;
 10720  
                                 }
 10721  0
                                 break;
 10722  
                         case CharacterLiteral:
 10723  
                         case DecimalLiteral:
 10724  
                         case FloatingPointLiteral:
 10725  
                         case HexLiteral:
 10726  
                         case OctalLiteral:
 10727  
                         case StringLiteral:
 10728  
                         case 75:
 10729  
                         case 89:
 10730  
                         case 105:
 10731  
                                 {
 10732  45
                                 alt154=4;
 10733  
                                 }
 10734  45
                                 break;
 10735  
                         case 88:
 10736  
                                 {
 10737  2
                                 alt154=5;
 10738  
                                 }
 10739  2
                                 break;
 10740  
                         case Identifier:
 10741  
                                 {
 10742  81
                                 alt154=6;
 10743  
                                 }
 10744  81
                                 break;
 10745  
                         case 62:
 10746  
                         case 64:
 10747  
                         case 67:
 10748  
                         case 72:
 10749  
                         case 78:
 10750  
                         case 84:
 10751  
                         case 86:
 10752  
                         case 95:
 10753  
                                 {
 10754  0
                                 alt154=7;
 10755  
                                 }
 10756  0
                                 break;
 10757  
                         case 107:
 10758  
                                 {
 10759  0
                                 alt154=8;
 10760  
                                 }
 10761  0
                                 break;
 10762  
                         default:
 10763  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 10764  0
                                 NoViableAltException nvae =
 10765  
                                         new NoViableAltException("", 154, 0, input);
 10766  0
                                 throw nvae;
 10767  
                         }
 10768  148
                         switch (alt154) {
 10769  
                                 case 1 :
 10770  
                                         // org/argouml/language/java/reveng/Java.g:1496:9: parExpression
 10771  
                                         {
 10772  0
                                         pushFollow(FOLLOW_parExpression_in_primary6923);
 10773  0
                                         parExpression();
 10774  0
                                         state._fsp--;
 10775  0
                                         if (state.failed) return;
 10776  
                                         }
 10777  
                                         break;
 10778  
                                 case 2 :
 10779  
                                         // org/argouml/language/java/reveng/Java.g:1497:9: 'this' ( '.' id= Identifier )* ( identifierSuffix )?
 10780  
                                         {
 10781  20
                                         match(input,101,FOLLOW_101_in_primary6933); if (state.failed) return;
 10782  
                                         // org/argouml/language/java/reveng/Java.g:1497:16: ( '.' id= Identifier )*
 10783  
                                         loop149:
 10784  
                                         while (true) {
 10785  40
                                                 int alt149=2;
 10786  40
                                                 int LA149_0 = input.LA(1);
 10787  40
                                                 if ( (LA149_0==45) ) {
 10788  20
                                                         int LA149_3 = input.LA(2);
 10789  20
                                                         if ( (LA149_3==Identifier) ) {
 10790  20
                                                                 int LA149_37 = input.LA(3);
 10791  20
                                                                 if ( (synpred237_Java()) ) {
 10792  20
                                                                         alt149=1;
 10793  
                                                                 }
 10794  
 
 10795  
                                                         }
 10796  
 
 10797  
                                                 }
 10798  
 
 10799  40
                                                 switch (alt149) {
 10800  
                                                 case 1 :
 10801  
                                                         // org/argouml/language/java/reveng/Java.g:1497:17: '.' id= Identifier
 10802  
                                                         {
 10803  20
                                                         match(input,45,FOLLOW_45_in_primary6936); if (state.failed) return;
 10804  20
                                                         id=(Token)match(input,Identifier,FOLLOW_Identifier_in_primary6940); if (state.failed) return;
 10805  20
                                                         if ( state.backtracking==0 ) { name = (id!=null?id.getText():null); }
 10806  
                                                         }
 10807  
                                                         break;
 10808  
 
 10809  
                                                 default :
 10810  20
                                                         break loop149;
 10811  
                                                 }
 10812  20
                                         }
 10813  
 
 10814  
                                         // org/argouml/language/java/reveng/Java.g:1498:9: ( identifierSuffix )?
 10815  20
                                         int alt150=2;
 10816  20
                                         switch ( input.LA(1) ) {
 10817  
                                                 case 57:
 10818  
                                                         {
 10819  0
                                                         switch ( input.LA(2) ) {
 10820  
                                                                 case 58:
 10821  
                                                                         {
 10822  0
                                                                         alt150=1;
 10823  
                                                                         }
 10824  0
                                                                         break;
 10825  
                                                                 case 38:
 10826  
                                                                         {
 10827  0
                                                                         int LA150_34 = input.LA(3);
 10828  0
                                                                         if ( (synpred238_Java()) ) {
 10829  0
                                                                                 alt150=1;
 10830  
                                                                         }
 10831  
                                                                         }
 10832  0
                                                                         break;
 10833  
                                                                 case 42:
 10834  
                                                                         {
 10835  0
                                                                         int LA150_35 = input.LA(3);
 10836  0
                                                                         if ( (synpred238_Java()) ) {
 10837  0
                                                                                 alt150=1;
 10838  
                                                                         }
 10839  
                                                                         }
 10840  0
                                                                         break;
 10841  
                                                                 case 39:
 10842  
                                                                         {
 10843  0
                                                                         int LA150_36 = input.LA(3);
 10844  0
                                                                         if ( (synpred238_Java()) ) {
 10845  0
                                                                                 alt150=1;
 10846  
                                                                         }
 10847  
                                                                         }
 10848  0
                                                                         break;
 10849  
                                                                 case 43:
 10850  
                                                                         {
 10851  0
                                                                         int LA150_37 = input.LA(3);
 10852  0
                                                                         if ( (synpred238_Java()) ) {
 10853  0
                                                                                 alt150=1;
 10854  
                                                                         }
 10855  
                                                                         }
 10856  0
                                                                         break;
 10857  
                                                                 case 115:
 10858  
                                                                         {
 10859  0
                                                                         int LA150_38 = input.LA(3);
 10860  0
                                                                         if ( (synpred238_Java()) ) {
 10861  0
                                                                                 alt150=1;
 10862  
                                                                         }
 10863  
                                                                         }
 10864  0
                                                                         break;
 10865  
                                                                 case 27:
 10866  
                                                                         {
 10867  0
                                                                         int LA150_39 = input.LA(3);
 10868  0
                                                                         if ( (synpred238_Java()) ) {
 10869  0
                                                                                 alt150=1;
 10870  
                                                                         }
 10871  
                                                                         }
 10872  0
                                                                         break;
 10873  
                                                                 case 34:
 10874  
                                                                         {
 10875  0
                                                                         int LA150_40 = input.LA(3);
 10876  0
                                                                         if ( (synpred238_Java()) ) {
 10877  0
                                                                                 alt150=1;
 10878  
                                                                         }
 10879  
                                                                         }
 10880  0
                                                                         break;
 10881  
                                                                 case 101:
 10882  
                                                                         {
 10883  0
                                                                         int LA150_41 = input.LA(3);
 10884  0
                                                                         if ( (synpred238_Java()) ) {
 10885  0
                                                                                 alt150=1;
 10886  
                                                                         }
 10887  
                                                                         }
 10888  0
                                                                         break;
 10889  
                                                                 case 98:
 10890  
                                                                         {
 10891  0
                                                                         int LA150_42 = input.LA(3);
 10892  0
                                                                         if ( (synpred238_Java()) ) {
 10893  0
                                                                                 alt150=1;
 10894  
                                                                         }
 10895  
                                                                         }
 10896  0
                                                                         break;
 10897  
                                                                 case DecimalLiteral:
 10898  
                                                                 case HexLiteral:
 10899  
                                                                 case OctalLiteral:
 10900  
                                                                         {
 10901  0
                                                                         int LA150_43 = input.LA(3);
 10902  0
                                                                         if ( (synpred238_Java()) ) {
 10903  0
                                                                                 alt150=1;
 10904  
                                                                         }
 10905  
                                                                         }
 10906  0
                                                                         break;
 10907  
                                                                 case FloatingPointLiteral:
 10908  
                                                                         {
 10909  0
                                                                         int LA150_44 = input.LA(3);
 10910  0
                                                                         if ( (synpred238_Java()) ) {
 10911  0
                                                                                 alt150=1;
 10912  
                                                                         }
 10913  
                                                                         }
 10914  0
                                                                         break;
 10915  
                                                                 case CharacterLiteral:
 10916  
                                                                         {
 10917  0
                                                                         int LA150_45 = input.LA(3);
 10918  0
                                                                         if ( (synpred238_Java()) ) {
 10919  0
                                                                                 alt150=1;
 10920  
                                                                         }
 10921  
                                                                         }
 10922  0
                                                                         break;
 10923  
                                                                 case StringLiteral:
 10924  
                                                                         {
 10925  0
                                                                         int LA150_46 = input.LA(3);
 10926  0
                                                                         if ( (synpred238_Java()) ) {
 10927  0
                                                                                 alt150=1;
 10928  
                                                                         }
 10929  
                                                                         }
 10930  0
                                                                         break;
 10931  
                                                                 case 75:
 10932  
                                                                 case 105:
 10933  
                                                                         {
 10934  0
                                                                         int LA150_47 = input.LA(3);
 10935  0
                                                                         if ( (synpred238_Java()) ) {
 10936  0
                                                                                 alt150=1;
 10937  
                                                                         }
 10938  
                                                                         }
 10939  0
                                                                         break;
 10940  
                                                                 case 89:
 10941  
                                                                         {
 10942  0
                                                                         int LA150_48 = input.LA(3);
 10943  0
                                                                         if ( (synpred238_Java()) ) {
 10944  0
                                                                                 alt150=1;
 10945  
                                                                         }
 10946  
                                                                         }
 10947  0
                                                                         break;
 10948  
                                                                 case 88:
 10949  
                                                                         {
 10950  0
                                                                         int LA150_49 = input.LA(3);
 10951  0
                                                                         if ( (synpred238_Java()) ) {
 10952  0
                                                                                 alt150=1;
 10953  
                                                                         }
 10954  
                                                                         }
 10955  0
                                                                         break;
 10956  
                                                                 case Identifier:
 10957  
                                                                         {
 10958  0
                                                                         int LA150_50 = input.LA(3);
 10959  0
                                                                         if ( (synpred238_Java()) ) {
 10960  0
                                                                                 alt150=1;
 10961  
                                                                         }
 10962  
                                                                         }
 10963  0
                                                                         break;
 10964  
                                                                 case 62:
 10965  
                                                                 case 64:
 10966  
                                                                 case 67:
 10967  
                                                                 case 72:
 10968  
                                                                 case 78:
 10969  
                                                                 case 84:
 10970  
                                                                 case 86:
 10971  
                                                                 case 95:
 10972  
                                                                         {
 10973  0
                                                                         int LA150_51 = input.LA(3);
 10974  0
                                                                         if ( (synpred238_Java()) ) {
 10975  0
                                                                                 alt150=1;
 10976  
                                                                         }
 10977  
                                                                         }
 10978  0
                                                                         break;
 10979  
                                                                 case 107:
 10980  
                                                                         {
 10981  0
                                                                         int LA150_52 = input.LA(3);
 10982  0
                                                                         if ( (synpred238_Java()) ) {
 10983  0
                                                                                 alt150=1;
 10984  
                                                                         }
 10985  
                                                                         }
 10986  
                                                                         break;
 10987  
                                                         }
 10988  
                                                         }
 10989  0
                                                         break;
 10990  
                                                 case 34:
 10991  
                                                         {
 10992  0
                                                         alt150=1;
 10993  
                                                         }
 10994  0
                                                         break;
 10995  
                                                 case 45:
 10996  
                                                         {
 10997  0
                                                         switch ( input.LA(2) ) {
 10998  
                                                                 case 68:
 10999  
                                                                         {
 11000  0
                                                                         alt150=1;
 11001  
                                                                         }
 11002  0
                                                                         break;
 11003  
                                                                 case 101:
 11004  
                                                                         {
 11005  0
                                                                         int LA150_54 = input.LA(3);
 11006  0
                                                                         if ( (synpred238_Java()) ) {
 11007  0
                                                                                 alt150=1;
 11008  
                                                                         }
 11009  
                                                                         }
 11010  0
                                                                         break;
 11011  
                                                                 case 98:
 11012  
                                                                         {
 11013  0
                                                                         int LA150_55 = input.LA(3);
 11014  0
                                                                         if ( (synpred238_Java()) ) {
 11015  0
                                                                                 alt150=1;
 11016  
                                                                         }
 11017  
                                                                         }
 11018  0
                                                                         break;
 11019  
                                                                 case 88:
 11020  
                                                                         {
 11021  0
                                                                         int LA150_56 = input.LA(3);
 11022  0
                                                                         if ( (synpred238_Java()) ) {
 11023  0
                                                                                 alt150=1;
 11024  
                                                                         }
 11025  
                                                                         }
 11026  0
                                                                         break;
 11027  
                                                                 case 51:
 11028  
                                                                         {
 11029  0
                                                                         int LA150_58 = input.LA(3);
 11030  0
                                                                         if ( (synpred238_Java()) ) {
 11031  0
                                                                                 alt150=1;
 11032  
                                                                         }
 11033  
                                                                         }
 11034  
                                                                         break;
 11035  
                                                         }
 11036  
                                                         }
 11037  
                                                         break;
 11038  
                                         }
 11039  20
                                         switch (alt150) {
 11040  
                                                 case 1 :
 11041  
                                                         // org/argouml/language/java/reveng/Java.g:1498:10: identifierSuffix
 11042  
                                                         {
 11043  0
                                                         pushFollow(FOLLOW_identifierSuffix_in_primary6956);
 11044  0
                                                         identifierSuffix();
 11045  0
                                                         state._fsp--;
 11046  0
                                                         if (state.failed) return;
 11047  0
                                                         if ( state.backtracking==0 ) { parenths = true; }
 11048  
                                                         }
 11049  
                                                         break;
 11050  
 
 11051  
                                         }
 11052  
 
 11053  20
                                         if ( state.backtracking==0 ) { if ((parserMode & MODE_REVENG_SEQUENCE) != 0) {
 11054  0
                                                       addDotCall(name, "this.", parenths);
 11055  
                                                   }
 11056  
                                                 }
 11057  
                                         }
 11058  20
                                         break;
 11059  
                                 case 3 :
 11060  
                                         // org/argouml/language/java/reveng/Java.g:1503:9: 'super' superSuffix
 11061  
                                         {
 11062  0
                                         match(input,98,FOLLOW_98_in_primary6981); if (state.failed) return;
 11063  0
                                         pushFollow(FOLLOW_superSuffix_in_primary6983);
 11064  0
                                         superSuffix();
 11065  0
                                         state._fsp--;
 11066  0
                                         if (state.failed) return;
 11067  0
                                         if ( state.backtracking==0 ) { if ((parserMode & MODE_REVENG_SEQUENCE) != 0) {
 11068  0
                                                       addDotCall(name, "super.", true);
 11069  
                                                   }
 11070  
                                                 }
 11071  
                                         }
 11072  
                                         break;
 11073  
                                 case 4 :
 11074  
                                         // org/argouml/language/java/reveng/Java.g:1508:9: literal
 11075  
                                         {
 11076  45
                                         pushFollow(FOLLOW_literal_in_primary7003);
 11077  45
                                         literal();
 11078  45
                                         state._fsp--;
 11079  45
                                         if (state.failed) return;
 11080  
                                         }
 11081  
                                         break;
 11082  
                                 case 5 :
 11083  
                                         // org/argouml/language/java/reveng/Java.g:1509:9: 'new' creator
 11084  
                                         {
 11085  2
                                         match(input,88,FOLLOW_88_in_primary7013); if (state.failed) return;
 11086  2
                                         pushFollow(FOLLOW_creator_in_primary7015);
 11087  2
                                         creator();
 11088  2
                                         state._fsp--;
 11089  2
                                         if (state.failed) return;
 11090  
                                         }
 11091  
                                         break;
 11092  
                                 case 6 :
 11093  
                                         // org/argouml/language/java/reveng/Java.g:1510:9: id= Identifier ( '.' id= Identifier )* ( identifierSuffix )?
 11094  
                                         {
 11095  81
                                         id=(Token)match(input,Identifier,FOLLOW_Identifier_in_primary7027); if (state.failed) return;
 11096  81
                                         if ( state.backtracking==0 ) { name = (id!=null?id.getText():null); }
 11097  
                                         // org/argouml/language/java/reveng/Java.g:1511:9: ( '.' id= Identifier )*
 11098  
                                         loop151:
 11099  
                                         while (true) {
 11100  81
                                                 int alt151=2;
 11101  81
                                                 int LA151_0 = input.LA(1);
 11102  81
                                                 if ( (LA151_0==45) ) {
 11103  0
                                                         int LA151_3 = input.LA(2);
 11104  0
                                                         if ( (LA151_3==Identifier) ) {
 11105  0
                                                                 int LA151_37 = input.LA(3);
 11106  0
                                                                 if ( (synpred243_Java()) ) {
 11107  0
                                                                         alt151=1;
 11108  
                                                                 }
 11109  
 
 11110  
                                                         }
 11111  
 
 11112  
                                                 }
 11113  
 
 11114  81
                                                 switch (alt151) {
 11115  
                                                 case 1 :
 11116  
                                                         // org/argouml/language/java/reveng/Java.g:1511:10: '.' id= Identifier
 11117  
                                                         {
 11118  0
                                                         match(input,45,FOLLOW_45_in_primary7041); if (state.failed) return;
 11119  0
                                                         id=(Token)match(input,Identifier,FOLLOW_Identifier_in_primary7045); if (state.failed) return;
 11120  0
                                                         if ( state.backtracking==0 ) { name = (id!=null?id.getText():null); }
 11121  
                                                         }
 11122  
                                                         break;
 11123  
 
 11124  
                                                 default :
 11125  81
                                                         break loop151;
 11126  
                                                 }
 11127  0
                                         }
 11128  
 
 11129  
                                         // org/argouml/language/java/reveng/Java.g:1512:9: ( identifierSuffix )?
 11130  81
                                         int alt152=2;
 11131  81
                                         switch ( input.LA(1) ) {
 11132  
                                                 case 57:
 11133  
                                                         {
 11134  0
                                                         switch ( input.LA(2) ) {
 11135  
                                                                 case 58:
 11136  
                                                                         {
 11137  0
                                                                         alt152=1;
 11138  
                                                                         }
 11139  0
                                                                         break;
 11140  
                                                                 case 38:
 11141  
                                                                         {
 11142  0
                                                                         int LA152_34 = input.LA(3);
 11143  0
                                                                         if ( (synpred244_Java()) ) {
 11144  0
                                                                                 alt152=1;
 11145  
                                                                         }
 11146  
                                                                         }
 11147  0
                                                                         break;
 11148  
                                                                 case 42:
 11149  
                                                                         {
 11150  0
                                                                         int LA152_35 = input.LA(3);
 11151  0
                                                                         if ( (synpred244_Java()) ) {
 11152  0
                                                                                 alt152=1;
 11153  
                                                                         }
 11154  
                                                                         }
 11155  0
                                                                         break;
 11156  
                                                                 case 39:
 11157  
                                                                         {
 11158  0
                                                                         int LA152_36 = input.LA(3);
 11159  0
                                                                         if ( (synpred244_Java()) ) {
 11160  0
                                                                                 alt152=1;
 11161  
                                                                         }
 11162  
                                                                         }
 11163  0
                                                                         break;
 11164  
                                                                 case 43:
 11165  
                                                                         {
 11166  0
                                                                         int LA152_37 = input.LA(3);
 11167  0
                                                                         if ( (synpred244_Java()) ) {
 11168  0
                                                                                 alt152=1;
 11169  
                                                                         }
 11170  
                                                                         }
 11171  0
                                                                         break;
 11172  
                                                                 case 115:
 11173  
                                                                         {
 11174  0
                                                                         int LA152_38 = input.LA(3);
 11175  0
                                                                         if ( (synpred244_Java()) ) {
 11176  0
                                                                                 alt152=1;
 11177  
                                                                         }
 11178  
                                                                         }
 11179  0
                                                                         break;
 11180  
                                                                 case 27:
 11181  
                                                                         {
 11182  0
                                                                         int LA152_39 = input.LA(3);
 11183  0
                                                                         if ( (synpred244_Java()) ) {
 11184  0
                                                                                 alt152=1;
 11185  
                                                                         }
 11186  
                                                                         }
 11187  0
                                                                         break;
 11188  
                                                                 case 34:
 11189  
                                                                         {
 11190  0
                                                                         int LA152_40 = input.LA(3);
 11191  0
                                                                         if ( (synpred244_Java()) ) {
 11192  0
                                                                                 alt152=1;
 11193  
                                                                         }
 11194  
                                                                         }
 11195  0
                                                                         break;
 11196  
                                                                 case 101:
 11197  
                                                                         {
 11198  0
                                                                         int LA152_41 = input.LA(3);
 11199  0
                                                                         if ( (synpred244_Java()) ) {
 11200  0
                                                                                 alt152=1;
 11201  
                                                                         }
 11202  
                                                                         }
 11203  0
                                                                         break;
 11204  
                                                                 case 98:
 11205  
                                                                         {
 11206  0
                                                                         int LA152_42 = input.LA(3);
 11207  0
                                                                         if ( (synpred244_Java()) ) {
 11208  0
                                                                                 alt152=1;
 11209  
                                                                         }
 11210  
                                                                         }
 11211  0
                                                                         break;
 11212  
                                                                 case DecimalLiteral:
 11213  
                                                                 case HexLiteral:
 11214  
                                                                 case OctalLiteral:
 11215  
                                                                         {
 11216  0
                                                                         int LA152_43 = input.LA(3);
 11217  0
                                                                         if ( (synpred244_Java()) ) {
 11218  0
                                                                                 alt152=1;
 11219  
                                                                         }
 11220  
                                                                         }
 11221  0
                                                                         break;
 11222  
                                                                 case FloatingPointLiteral:
 11223  
                                                                         {
 11224  0
                                                                         int LA152_44 = input.LA(3);
 11225  0
                                                                         if ( (synpred244_Java()) ) {
 11226  0
                                                                                 alt152=1;
 11227  
                                                                         }
 11228  
                                                                         }
 11229  0
                                                                         break;
 11230  
                                                                 case CharacterLiteral:
 11231  
                                                                         {
 11232  0
                                                                         int LA152_45 = input.LA(3);
 11233  0
                                                                         if ( (synpred244_Java()) ) {
 11234  0
                                                                                 alt152=1;
 11235  
                                                                         }
 11236  
                                                                         }
 11237  0
                                                                         break;
 11238  
                                                                 case StringLiteral:
 11239  
                                                                         {
 11240  0
                                                                         int LA152_46 = input.LA(3);
 11241  0
                                                                         if ( (synpred244_Java()) ) {
 11242  0
                                                                                 alt152=1;
 11243  
                                                                         }
 11244  
                                                                         }
 11245  0
                                                                         break;
 11246  
                                                                 case 75:
 11247  
                                                                 case 105:
 11248  
                                                                         {
 11249  0
                                                                         int LA152_47 = input.LA(3);
 11250  0
                                                                         if ( (synpred244_Java()) ) {
 11251  0
                                                                                 alt152=1;
 11252  
                                                                         }
 11253  
                                                                         }
 11254  0
                                                                         break;
 11255  
                                                                 case 89:
 11256  
                                                                         {
 11257  0
                                                                         int LA152_48 = input.LA(3);
 11258  0
                                                                         if ( (synpred244_Java()) ) {
 11259  0
                                                                                 alt152=1;
 11260  
                                                                         }
 11261  
                                                                         }
 11262  0
                                                                         break;
 11263  
                                                                 case 88:
 11264  
                                                                         {
 11265  0
                                                                         int LA152_49 = input.LA(3);
 11266  0
                                                                         if ( (synpred244_Java()) ) {
 11267  0
                                                                                 alt152=1;
 11268  
                                                                         }
 11269  
                                                                         }
 11270  0
                                                                         break;
 11271  
                                                                 case Identifier:
 11272  
                                                                         {
 11273  0
                                                                         int LA152_50 = input.LA(3);
 11274  0
                                                                         if ( (synpred244_Java()) ) {
 11275  0
                                                                                 alt152=1;
 11276  
                                                                         }
 11277  
                                                                         }
 11278  0
                                                                         break;
 11279  
                                                                 case 62:
 11280  
                                                                 case 64:
 11281  
                                                                 case 67:
 11282  
                                                                 case 72:
 11283  
                                                                 case 78:
 11284  
                                                                 case 84:
 11285  
                                                                 case 86:
 11286  
                                                                 case 95:
 11287  
                                                                         {
 11288  0
                                                                         int LA152_51 = input.LA(3);
 11289  0
                                                                         if ( (synpred244_Java()) ) {
 11290  0
                                                                                 alt152=1;
 11291  
                                                                         }
 11292  
                                                                         }
 11293  0
                                                                         break;
 11294  
                                                                 case 107:
 11295  
                                                                         {
 11296  0
                                                                         int LA152_52 = input.LA(3);
 11297  0
                                                                         if ( (synpred244_Java()) ) {
 11298  0
                                                                                 alt152=1;
 11299  
                                                                         }
 11300  
                                                                         }
 11301  
                                                                         break;
 11302  
                                                         }
 11303  
                                                         }
 11304  0
                                                         break;
 11305  
                                                 case 34:
 11306  
                                                         {
 11307  0
                                                         alt152=1;
 11308  
                                                         }
 11309  0
                                                         break;
 11310  
                                                 case 45:
 11311  
                                                         {
 11312  0
                                                         switch ( input.LA(2) ) {
 11313  
                                                                 case 68:
 11314  
                                                                         {
 11315  0
                                                                         alt152=1;
 11316  
                                                                         }
 11317  0
                                                                         break;
 11318  
                                                                 case 101:
 11319  
                                                                         {
 11320  0
                                                                         int LA152_54 = input.LA(3);
 11321  0
                                                                         if ( (synpred244_Java()) ) {
 11322  0
                                                                                 alt152=1;
 11323  
                                                                         }
 11324  
                                                                         }
 11325  0
                                                                         break;
 11326  
                                                                 case 98:
 11327  
                                                                         {
 11328  0
                                                                         int LA152_55 = input.LA(3);
 11329  0
                                                                         if ( (synpred244_Java()) ) {
 11330  0
                                                                                 alt152=1;
 11331  
                                                                         }
 11332  
                                                                         }
 11333  0
                                                                         break;
 11334  
                                                                 case 88:
 11335  
                                                                         {
 11336  0
                                                                         int LA152_56 = input.LA(3);
 11337  0
                                                                         if ( (synpred244_Java()) ) {
 11338  0
                                                                                 alt152=1;
 11339  
                                                                         }
 11340  
                                                                         }
 11341  0
                                                                         break;
 11342  
                                                                 case 51:
 11343  
                                                                         {
 11344  0
                                                                         int LA152_58 = input.LA(3);
 11345  0
                                                                         if ( (synpred244_Java()) ) {
 11346  0
                                                                                 alt152=1;
 11347  
                                                                         }
 11348  
                                                                         }
 11349  
                                                                         break;
 11350  
                                                         }
 11351  
                                                         }
 11352  
                                                         break;
 11353  
                                         }
 11354  81
                                         switch (alt152) {
 11355  
                                                 case 1 :
 11356  
                                                         // org/argouml/language/java/reveng/Java.g:1512:10: identifierSuffix
 11357  
                                                         {
 11358  0
                                                         pushFollow(FOLLOW_identifierSuffix_in_primary7061);
 11359  0
                                                         identifierSuffix();
 11360  0
                                                         state._fsp--;
 11361  0
                                                         if (state.failed) return;
 11362  0
                                                         if ( state.backtracking==0 ) { parenths = true; }
 11363  
                                                         }
 11364  
                                                         break;
 11365  
 
 11366  
                                         }
 11367  
 
 11368  81
                                         if ( state.backtracking==0 ) { if ((parserMode & MODE_REVENG_SEQUENCE) != 0) {
 11369  0
                                                       addDotCall(name, null, parenths);
 11370  
                                                   }
 11371  
                                                 }
 11372  
                                         }
 11373  81
                                         break;
 11374  
                                 case 7 :
 11375  
                                         // org/argouml/language/java/reveng/Java.g:1517:9: primitiveType ( '[' ']' )* '.' 'class'
 11376  
                                         {
 11377  0
                                         pushFollow(FOLLOW_primitiveType_in_primary7086);
 11378  0
                                         primitiveType();
 11379  0
                                         state._fsp--;
 11380  0
                                         if (state.failed) return;
 11381  
                                         // org/argouml/language/java/reveng/Java.g:1517:23: ( '[' ']' )*
 11382  
                                         loop153:
 11383  
                                         while (true) {
 11384  0
                                                 int alt153=2;
 11385  0
                                                 int LA153_0 = input.LA(1);
 11386  0
                                                 if ( (LA153_0==57) ) {
 11387  0
                                                         alt153=1;
 11388  
                                                 }
 11389  
 
 11390  0
                                                 switch (alt153) {
 11391  
                                                 case 1 :
 11392  
                                                         // org/argouml/language/java/reveng/Java.g:1517:24: '[' ']'
 11393  
                                                         {
 11394  0
                                                         match(input,57,FOLLOW_57_in_primary7089); if (state.failed) return;
 11395  0
                                                         match(input,58,FOLLOW_58_in_primary7091); if (state.failed) return;
 11396  
                                                         }
 11397  
                                                         break;
 11398  
 
 11399  
                                                 default :
 11400  0
                                                         break loop153;
 11401  
                                                 }
 11402  0
                                         }
 11403  
 
 11404  0
                                         match(input,45,FOLLOW_45_in_primary7095); if (state.failed) return;
 11405  0
                                         match(input,68,FOLLOW_68_in_primary7097); if (state.failed) return;
 11406  
                                         }
 11407  
                                         break;
 11408  
                                 case 8 :
 11409  
                                         // org/argouml/language/java/reveng/Java.g:1518:9: 'void' '.' 'class'
 11410  
                                         {
 11411  0
                                         match(input,107,FOLLOW_107_in_primary7107); if (state.failed) return;
 11412  0
                                         match(input,45,FOLLOW_45_in_primary7109); if (state.failed) return;
 11413  0
                                         match(input,68,FOLLOW_68_in_primary7111); if (state.failed) return;
 11414  
                                         }
 11415  
                                         break;
 11416  
 
 11417  
                         }
 11418  
                 }
 11419  0
                 catch (RecognitionException re) {
 11420  0
                         reportError(re);
 11421  0
                         recover(input,re);
 11422  
                 }
 11423  
                 finally {
 11424  
                         // do for sure before leaving
 11425  148
                         if ( state.backtracking>0 ) { memoize(input, 125, primary_StartIndex); }
 11426  
 
 11427  0
                 }
 11428  148
         }
 11429  
         // $ANTLR end "primary"
 11430  
 
 11431  
 
 11432  
 
 11433  
         // $ANTLR start "identifierSuffix"
 11434  
         // org/argouml/language/java/reveng/Java.g:1521:1: identifierSuffix : ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' innerCreator );
 11435  
         public final void identifierSuffix() throws RecognitionException {
 11436  0
                 int identifierSuffix_StartIndex = input.index();
 11437  
 
 11438  
                 try {
 11439  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 126) ) { return; }
 11440  
 
 11441  
                         // org/argouml/language/java/reveng/Java.g:1522:5: ( ( '[' ']' )+ '.' 'class' | ( '[' expression ']' )+ | arguments | '.' 'class' | '.' explicitGenericInvocation | '.' 'this' | '.' 'super' arguments | '.' 'new' innerCreator )
 11442  0
                         int alt157=8;
 11443  0
                         switch ( input.LA(1) ) {
 11444  
                         case 57:
 11445  
                                 {
 11446  0
                                 int LA157_1 = input.LA(2);
 11447  0
                                 if ( (LA157_1==58) ) {
 11448  0
                                         alt157=1;
 11449  
                                 }
 11450  0
                                 else if ( ((LA157_1 >= CharacterLiteral && LA157_1 <= DecimalLiteral)||LA157_1==FloatingPointLiteral||(LA157_1 >= HexLiteral && LA157_1 <= Identifier)||(LA157_1 >= OctalLiteral && LA157_1 <= StringLiteral)||LA157_1==27||LA157_1==34||(LA157_1 >= 38 && LA157_1 <= 39)||(LA157_1 >= 42 && LA157_1 <= 43)||LA157_1==62||LA157_1==64||LA157_1==67||LA157_1==72||LA157_1==75||LA157_1==78||LA157_1==84||LA157_1==86||(LA157_1 >= 88 && LA157_1 <= 89)||LA157_1==95||LA157_1==98||LA157_1==101||LA157_1==105||LA157_1==107||LA157_1==115) ) {
 11451  0
                                         alt157=2;
 11452  
                                 }
 11453  
 
 11454  
                                 else {
 11455  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 11456  0
                                         int nvaeMark = input.mark();
 11457  
                                         try {
 11458  0
                                                 input.consume();
 11459  0
                                                 NoViableAltException nvae =
 11460  
                                                         new NoViableAltException("", 157, 1, input);
 11461  0
                                                 throw nvae;
 11462  
                                         } finally {
 11463  0
                                                 input.rewind(nvaeMark);
 11464  0
                                         }
 11465  
                                 }
 11466  
 
 11467  
                                 }
 11468  0
                                 break;
 11469  
                         case 34:
 11470  
                                 {
 11471  0
                                 alt157=3;
 11472  
                                 }
 11473  0
                                 break;
 11474  
                         case 45:
 11475  
                                 {
 11476  0
                                 switch ( input.LA(2) ) {
 11477  
                                 case 68:
 11478  
                                         {
 11479  0
                                         alt157=4;
 11480  
                                         }
 11481  0
                                         break;
 11482  
                                 case 101:
 11483  
                                         {
 11484  0
                                         alt157=6;
 11485  
                                         }
 11486  0
                                         break;
 11487  
                                 case 98:
 11488  
                                         {
 11489  0
                                         alt157=7;
 11490  
                                         }
 11491  0
                                         break;
 11492  
                                 case 88:
 11493  
                                         {
 11494  0
                                         alt157=8;
 11495  
                                         }
 11496  0
                                         break;
 11497  
                                 case 51:
 11498  
                                         {
 11499  0
                                         alt157=5;
 11500  
                                         }
 11501  0
                                         break;
 11502  
                                 default:
 11503  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 11504  0
                                         int nvaeMark = input.mark();
 11505  
                                         try {
 11506  0
                                                 input.consume();
 11507  0
                                                 NoViableAltException nvae =
 11508  
                                                         new NoViableAltException("", 157, 3, input);
 11509  0
                                                 throw nvae;
 11510  
                                         } finally {
 11511  0
                                                 input.rewind(nvaeMark);
 11512  0
                                         }
 11513  
                                 }
 11514  
                                 }
 11515  0
                                 break;
 11516  
                         default:
 11517  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 11518  0
                                 NoViableAltException nvae =
 11519  
                                         new NoViableAltException("", 157, 0, input);
 11520  0
                                 throw nvae;
 11521  
                         }
 11522  0
                         switch (alt157) {
 11523  
                                 case 1 :
 11524  
                                         // org/argouml/language/java/reveng/Java.g:1522:9: ( '[' ']' )+ '.' 'class'
 11525  
                                         {
 11526  
                                         // org/argouml/language/java/reveng/Java.g:1522:9: ( '[' ']' )+
 11527  0
                                         int cnt155=0;
 11528  
                                         loop155:
 11529  
                                         while (true) {
 11530  0
                                                 int alt155=2;
 11531  0
                                                 int LA155_0 = input.LA(1);
 11532  0
                                                 if ( (LA155_0==57) ) {
 11533  0
                                                         alt155=1;
 11534  
                                                 }
 11535  
 
 11536  0
                                                 switch (alt155) {
 11537  
                                                 case 1 :
 11538  
                                                         // org/argouml/language/java/reveng/Java.g:1522:10: '[' ']'
 11539  
                                                         {
 11540  0
                                                         match(input,57,FOLLOW_57_in_identifierSuffix7131); if (state.failed) return;
 11541  0
                                                         match(input,58,FOLLOW_58_in_identifierSuffix7133); if (state.failed) return;
 11542  
                                                         }
 11543  
                                                         break;
 11544  
 
 11545  
                                                 default :
 11546  0
                                                         if ( cnt155 >= 1 ) break loop155;
 11547  0
                                                         if (state.backtracking>0) {state.failed=true; return;}
 11548  0
                                                         EarlyExitException eee = new EarlyExitException(155, input);
 11549  0
                                                         throw eee;
 11550  
                                                 }
 11551  0
                                                 cnt155++;
 11552  0
                                         }
 11553  
 
 11554  0
                                         match(input,45,FOLLOW_45_in_identifierSuffix7137); if (state.failed) return;
 11555  0
                                         match(input,68,FOLLOW_68_in_identifierSuffix7139); if (state.failed) return;
 11556  
                                         }
 11557  0
                                         break;
 11558  
                                 case 2 :
 11559  
                                         // org/argouml/language/java/reveng/Java.g:1523:9: ( '[' expression ']' )+
 11560  
                                         {
 11561  
                                         // org/argouml/language/java/reveng/Java.g:1523:9: ( '[' expression ']' )+
 11562  0
                                         int cnt156=0;
 11563  
                                         loop156:
 11564  
                                         while (true) {
 11565  0
                                                 int alt156=2;
 11566  0
                                                 int LA156_0 = input.LA(1);
 11567  0
                                                 if ( (LA156_0==57) ) {
 11568  0
                                                         switch ( input.LA(2) ) {
 11569  
                                                         case 38:
 11570  
                                                                 {
 11571  0
                                                                 int LA156_32 = input.LA(3);
 11572  0
                                                                 if ( (synpred250_Java()) ) {
 11573  0
                                                                         alt156=1;
 11574  
                                                                 }
 11575  
 
 11576  
                                                                 }
 11577  0
                                                                 break;
 11578  
                                                         case 42:
 11579  
                                                                 {
 11580  0
                                                                 int LA156_33 = input.LA(3);
 11581  0
                                                                 if ( (synpred250_Java()) ) {
 11582  0
                                                                         alt156=1;
 11583  
                                                                 }
 11584  
 
 11585  
                                                                 }
 11586  0
                                                                 break;
 11587  
                                                         case 39:
 11588  
                                                                 {
 11589  0
                                                                 int LA156_34 = input.LA(3);
 11590  0
                                                                 if ( (synpred250_Java()) ) {
 11591  0
                                                                         alt156=1;
 11592  
                                                                 }
 11593  
 
 11594  
                                                                 }
 11595  0
                                                                 break;
 11596  
                                                         case 43:
 11597  
                                                                 {
 11598  0
                                                                 int LA156_35 = input.LA(3);
 11599  0
                                                                 if ( (synpred250_Java()) ) {
 11600  0
                                                                         alt156=1;
 11601  
                                                                 }
 11602  
 
 11603  
                                                                 }
 11604  0
                                                                 break;
 11605  
                                                         case 115:
 11606  
                                                                 {
 11607  0
                                                                 int LA156_36 = input.LA(3);
 11608  0
                                                                 if ( (synpred250_Java()) ) {
 11609  0
                                                                         alt156=1;
 11610  
                                                                 }
 11611  
 
 11612  
                                                                 }
 11613  0
                                                                 break;
 11614  
                                                         case 27:
 11615  
                                                                 {
 11616  0
                                                                 int LA156_37 = input.LA(3);
 11617  0
                                                                 if ( (synpred250_Java()) ) {
 11618  0
                                                                         alt156=1;
 11619  
                                                                 }
 11620  
 
 11621  
                                                                 }
 11622  0
                                                                 break;
 11623  
                                                         case 34:
 11624  
                                                                 {
 11625  0
                                                                 int LA156_38 = input.LA(3);
 11626  0
                                                                 if ( (synpred250_Java()) ) {
 11627  0
                                                                         alt156=1;
 11628  
                                                                 }
 11629  
 
 11630  
                                                                 }
 11631  0
                                                                 break;
 11632  
                                                         case 101:
 11633  
                                                                 {
 11634  0
                                                                 int LA156_39 = input.LA(3);
 11635  0
                                                                 if ( (synpred250_Java()) ) {
 11636  0
                                                                         alt156=1;
 11637  
                                                                 }
 11638  
 
 11639  
                                                                 }
 11640  0
                                                                 break;
 11641  
                                                         case 98:
 11642  
                                                                 {
 11643  0
                                                                 int LA156_40 = input.LA(3);
 11644  0
                                                                 if ( (synpred250_Java()) ) {
 11645  0
                                                                         alt156=1;
 11646  
                                                                 }
 11647  
 
 11648  
                                                                 }
 11649  0
                                                                 break;
 11650  
                                                         case DecimalLiteral:
 11651  
                                                         case HexLiteral:
 11652  
                                                         case OctalLiteral:
 11653  
                                                                 {
 11654  0
                                                                 int LA156_41 = input.LA(3);
 11655  0
                                                                 if ( (synpred250_Java()) ) {
 11656  0
                                                                         alt156=1;
 11657  
                                                                 }
 11658  
 
 11659  
                                                                 }
 11660  0
                                                                 break;
 11661  
                                                         case FloatingPointLiteral:
 11662  
                                                                 {
 11663  0
                                                                 int LA156_42 = input.LA(3);
 11664  0
                                                                 if ( (synpred250_Java()) ) {
 11665  0
                                                                         alt156=1;
 11666  
                                                                 }
 11667  
 
 11668  
                                                                 }
 11669  0
                                                                 break;
 11670  
                                                         case CharacterLiteral:
 11671  
                                                                 {
 11672  0
                                                                 int LA156_43 = input.LA(3);
 11673  0
                                                                 if ( (synpred250_Java()) ) {
 11674  0
                                                                         alt156=1;
 11675  
                                                                 }
 11676  
 
 11677  
                                                                 }
 11678  0
                                                                 break;
 11679  
                                                         case StringLiteral:
 11680  
                                                                 {
 11681  0
                                                                 int LA156_44 = input.LA(3);
 11682  0
                                                                 if ( (synpred250_Java()) ) {
 11683  0
                                                                         alt156=1;
 11684  
                                                                 }
 11685  
 
 11686  
                                                                 }
 11687  0
                                                                 break;
 11688  
                                                         case 75:
 11689  
                                                         case 105:
 11690  
                                                                 {
 11691  0
                                                                 int LA156_45 = input.LA(3);
 11692  0
                                                                 if ( (synpred250_Java()) ) {
 11693  0
                                                                         alt156=1;
 11694  
                                                                 }
 11695  
 
 11696  
                                                                 }
 11697  0
                                                                 break;
 11698  
                                                         case 89:
 11699  
                                                                 {
 11700  0
                                                                 int LA156_46 = input.LA(3);
 11701  0
                                                                 if ( (synpred250_Java()) ) {
 11702  0
                                                                         alt156=1;
 11703  
                                                                 }
 11704  
 
 11705  
                                                                 }
 11706  0
                                                                 break;
 11707  
                                                         case 88:
 11708  
                                                                 {
 11709  0
                                                                 int LA156_47 = input.LA(3);
 11710  0
                                                                 if ( (synpred250_Java()) ) {
 11711  0
                                                                         alt156=1;
 11712  
                                                                 }
 11713  
 
 11714  
                                                                 }
 11715  0
                                                                 break;
 11716  
                                                         case Identifier:
 11717  
                                                                 {
 11718  0
                                                                 int LA156_48 = input.LA(3);
 11719  0
                                                                 if ( (synpred250_Java()) ) {
 11720  0
                                                                         alt156=1;
 11721  
                                                                 }
 11722  
 
 11723  
                                                                 }
 11724  0
                                                                 break;
 11725  
                                                         case 62:
 11726  
                                                         case 64:
 11727  
                                                         case 67:
 11728  
                                                         case 72:
 11729  
                                                         case 78:
 11730  
                                                         case 84:
 11731  
                                                         case 86:
 11732  
                                                         case 95:
 11733  
                                                                 {
 11734  0
                                                                 int LA156_49 = input.LA(3);
 11735  0
                                                                 if ( (synpred250_Java()) ) {
 11736  0
                                                                         alt156=1;
 11737  
                                                                 }
 11738  
 
 11739  
                                                                 }
 11740  0
                                                                 break;
 11741  
                                                         case 107:
 11742  
                                                                 {
 11743  0
                                                                 int LA156_50 = input.LA(3);
 11744  0
                                                                 if ( (synpred250_Java()) ) {
 11745  0
                                                                         alt156=1;
 11746  
                                                                 }
 11747  
 
 11748  
                                                                 }
 11749  
                                                                 break;
 11750  
                                                         }
 11751  
                                                 }
 11752  
 
 11753  0
                                                 switch (alt156) {
 11754  
                                                 case 1 :
 11755  
                                                         // org/argouml/language/java/reveng/Java.g:1523:10: '[' expression ']'
 11756  
                                                         {
 11757  0
                                                         match(input,57,FOLLOW_57_in_identifierSuffix7150); if (state.failed) return;
 11758  0
                                                         pushFollow(FOLLOW_expression_in_identifierSuffix7152);
 11759  0
                                                         expression();
 11760  0
                                                         state._fsp--;
 11761  0
                                                         if (state.failed) return;
 11762  0
                                                         match(input,58,FOLLOW_58_in_identifierSuffix7154); if (state.failed) return;
 11763  
                                                         }
 11764  
                                                         break;
 11765  
 
 11766  
                                                 default :
 11767  0
                                                         if ( cnt156 >= 1 ) break loop156;
 11768  0
                                                         if (state.backtracking>0) {state.failed=true; return;}
 11769  0
                                                         EarlyExitException eee = new EarlyExitException(156, input);
 11770  0
                                                         throw eee;
 11771  
                                                 }
 11772  0
                                                 cnt156++;
 11773  0
                                         }
 11774  
 
 11775  
                                         }
 11776  0
                                         break;
 11777  
                                 case 3 :
 11778  
                                         // org/argouml/language/java/reveng/Java.g:1524:9: arguments
 11779  
                                         {
 11780  0
                                         pushFollow(FOLLOW_arguments_in_identifierSuffix7167);
 11781  0
                                         arguments();
 11782  0
                                         state._fsp--;
 11783  0
                                         if (state.failed) return;
 11784  
                                         }
 11785  
                                         break;
 11786  
                                 case 4 :
 11787  
                                         // org/argouml/language/java/reveng/Java.g:1525:9: '.' 'class'
 11788  
                                         {
 11789  0
                                         match(input,45,FOLLOW_45_in_identifierSuffix7177); if (state.failed) return;
 11790  0
                                         match(input,68,FOLLOW_68_in_identifierSuffix7179); if (state.failed) return;
 11791  
                                         }
 11792  
                                         break;
 11793  
                                 case 5 :
 11794  
                                         // org/argouml/language/java/reveng/Java.g:1526:9: '.' explicitGenericInvocation
 11795  
                                         {
 11796  0
                                         match(input,45,FOLLOW_45_in_identifierSuffix7189); if (state.failed) return;
 11797  0
                                         pushFollow(FOLLOW_explicitGenericInvocation_in_identifierSuffix7191);
 11798  0
                                         explicitGenericInvocation();
 11799  0
                                         state._fsp--;
 11800  0
                                         if (state.failed) return;
 11801  
                                         }
 11802  
                                         break;
 11803  
                                 case 6 :
 11804  
                                         // org/argouml/language/java/reveng/Java.g:1527:9: '.' 'this'
 11805  
                                         {
 11806  0
                                         match(input,45,FOLLOW_45_in_identifierSuffix7201); if (state.failed) return;
 11807  0
                                         match(input,101,FOLLOW_101_in_identifierSuffix7203); if (state.failed) return;
 11808  
                                         }
 11809  
                                         break;
 11810  
                                 case 7 :
 11811  
                                         // org/argouml/language/java/reveng/Java.g:1528:9: '.' 'super' arguments
 11812  
                                         {
 11813  0
                                         match(input,45,FOLLOW_45_in_identifierSuffix7213); if (state.failed) return;
 11814  0
                                         match(input,98,FOLLOW_98_in_identifierSuffix7215); if (state.failed) return;
 11815  0
                                         pushFollow(FOLLOW_arguments_in_identifierSuffix7217);
 11816  0
                                         arguments();
 11817  0
                                         state._fsp--;
 11818  0
                                         if (state.failed) return;
 11819  
                                         }
 11820  
                                         break;
 11821  
                                 case 8 :
 11822  
                                         // org/argouml/language/java/reveng/Java.g:1529:9: '.' 'new' innerCreator
 11823  
                                         {
 11824  0
                                         match(input,45,FOLLOW_45_in_identifierSuffix7227); if (state.failed) return;
 11825  0
                                         match(input,88,FOLLOW_88_in_identifierSuffix7229); if (state.failed) return;
 11826  0
                                         pushFollow(FOLLOW_innerCreator_in_identifierSuffix7231);
 11827  0
                                         innerCreator();
 11828  0
                                         state._fsp--;
 11829  0
                                         if (state.failed) return;
 11830  
                                         }
 11831  
                                         break;
 11832  
 
 11833  
                         }
 11834  
                 }
 11835  0
                 catch (RecognitionException re) {
 11836  0
                         reportError(re);
 11837  0
                         recover(input,re);
 11838  
                 }
 11839  
                 finally {
 11840  
                         // do for sure before leaving
 11841  0
                         if ( state.backtracking>0 ) { memoize(input, 126, identifierSuffix_StartIndex); }
 11842  
 
 11843  0
                 }
 11844  0
         }
 11845  
         // $ANTLR end "identifierSuffix"
 11846  
 
 11847  
 
 11848  
 
 11849  
         // $ANTLR start "creator"
 11850  
         // org/argouml/language/java/reveng/Java.g:1532:1: creator : ( nonWildcardTypeArguments t= createdName classCreatorRest[$t.text] |t= createdName ( arrayCreatorRest | classCreatorRest[$t.text] ) );
 11851  
         public final void creator() throws RecognitionException {
 11852  2
                 int creator_StartIndex = input.index();
 11853  
 
 11854  2
                 ParserRuleReturnScope t =null;
 11855  
 
 11856  
                 try {
 11857  2
                         if ( state.backtracking>0 && alreadyParsedRule(input, 127) ) { return; }
 11858  
 
 11859  
                         // org/argouml/language/java/reveng/Java.g:1533:5: ( nonWildcardTypeArguments t= createdName classCreatorRest[$t.text] |t= createdName ( arrayCreatorRest | classCreatorRest[$t.text] ) )
 11860  2
                         int alt159=2;
 11861  2
                         int LA159_0 = input.LA(1);
 11862  2
                         if ( (LA159_0==51) ) {
 11863  0
                                 alt159=1;
 11864  
                         }
 11865  2
                         else if ( (LA159_0==Identifier||LA159_0==62||LA159_0==64||LA159_0==67||LA159_0==72||LA159_0==78||LA159_0==84||LA159_0==86||LA159_0==95) ) {
 11866  2
                                 alt159=2;
 11867  
                         }
 11868  
 
 11869  
                         else {
 11870  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 11871  0
                                 NoViableAltException nvae =
 11872  
                                         new NoViableAltException("", 159, 0, input);
 11873  0
                                 throw nvae;
 11874  
                         }
 11875  
 
 11876  2
                         switch (alt159) {
 11877  
                                 case 1 :
 11878  
                                         // org/argouml/language/java/reveng/Java.g:1533:9: nonWildcardTypeArguments t= createdName classCreatorRest[$t.text]
 11879  
                                         {
 11880  0
                                         pushFollow(FOLLOW_nonWildcardTypeArguments_in_creator7250);
 11881  0
                                         nonWildcardTypeArguments();
 11882  0
                                         state._fsp--;
 11883  0
                                         if (state.failed) return;
 11884  0
                                         pushFollow(FOLLOW_createdName_in_creator7254);
 11885  0
                                         t=createdName();
 11886  0
                                         state._fsp--;
 11887  0
                                         if (state.failed) return;
 11888  0
                                         pushFollow(FOLLOW_classCreatorRest_in_creator7256);
 11889  0
                                         classCreatorRest((t!=null?input.toString(t.start,t.stop):null));
 11890  0
                                         state._fsp--;
 11891  0
                                         if (state.failed) return;
 11892  
                                         }
 11893  
                                         break;
 11894  
                                 case 2 :
 11895  
                                         // org/argouml/language/java/reveng/Java.g:1534:9: t= createdName ( arrayCreatorRest | classCreatorRest[$t.text] )
 11896  
                                         {
 11897  2
                                         pushFollow(FOLLOW_createdName_in_creator7269);
 11898  2
                                         t=createdName();
 11899  2
                                         state._fsp--;
 11900  2
                                         if (state.failed) return;
 11901  
                                         // org/argouml/language/java/reveng/Java.g:1534:23: ( arrayCreatorRest | classCreatorRest[$t.text] )
 11902  2
                                         int alt158=2;
 11903  2
                                         int LA158_0 = input.LA(1);
 11904  2
                                         if ( (LA158_0==57) ) {
 11905  0
                                                 alt158=1;
 11906  
                                         }
 11907  2
                                         else if ( (LA158_0==34) ) {
 11908  2
                                                 alt158=2;
 11909  
                                         }
 11910  
 
 11911  
                                         else {
 11912  0
                                                 if (state.backtracking>0) {state.failed=true; return;}
 11913  0
                                                 NoViableAltException nvae =
 11914  
                                                         new NoViableAltException("", 158, 0, input);
 11915  0
                                                 throw nvae;
 11916  
                                         }
 11917  
 
 11918  2
                                         switch (alt158) {
 11919  
                                                 case 1 :
 11920  
                                                         // org/argouml/language/java/reveng/Java.g:1534:24: arrayCreatorRest
 11921  
                                                         {
 11922  0
                                                         pushFollow(FOLLOW_arrayCreatorRest_in_creator7272);
 11923  0
                                                         arrayCreatorRest();
 11924  0
                                                         state._fsp--;
 11925  0
                                                         if (state.failed) return;
 11926  
                                                         }
 11927  
                                                         break;
 11928  
                                                 case 2 :
 11929  
                                                         // org/argouml/language/java/reveng/Java.g:1534:43: classCreatorRest[$t.text]
 11930  
                                                         {
 11931  2
                                                         pushFollow(FOLLOW_classCreatorRest_in_creator7276);
 11932  2
                                                         classCreatorRest((t!=null?input.toString(t.start,t.stop):null));
 11933  2
                                                         state._fsp--;
 11934  2
                                                         if (state.failed) return;
 11935  
                                                         }
 11936  
                                                         break;
 11937  
 
 11938  
                                         }
 11939  
 
 11940  
                                         }
 11941  
                                         break;
 11942  
 
 11943  
                         }
 11944  
                 }
 11945  0
                 catch (RecognitionException re) {
 11946  0
                         reportError(re);
 11947  0
                         recover(input,re);
 11948  
                 }
 11949  
                 finally {
 11950  
                         // do for sure before leaving
 11951  2
                         if ( state.backtracking>0 ) { memoize(input, 127, creator_StartIndex); }
 11952  
 
 11953  0
                 }
 11954  2
         }
 11955  
         // $ANTLR end "creator"
 11956  
 
 11957  
 
 11958  2
         public static class createdName_return extends ParserRuleReturnScope {
 11959  
         };
 11960  
 
 11961  
 
 11962  
         // $ANTLR start "createdName"
 11963  
         // org/argouml/language/java/reveng/Java.g:1537:1: createdName : ( classOrInterfaceType | primitiveType );
 11964  
         public final JavaParser.createdName_return createdName() throws RecognitionException {
 11965  2
                 JavaParser.createdName_return retval = new JavaParser.createdName_return();
 11966  2
                 retval.start = input.LT(1);
 11967  2
                 int createdName_StartIndex = input.index();
 11968  
 
 11969  
                 try {
 11970  2
                         if ( state.backtracking>0 && alreadyParsedRule(input, 128) ) { return retval; }
 11971  
 
 11972  
                         // org/argouml/language/java/reveng/Java.g:1538:5: ( classOrInterfaceType | primitiveType )
 11973  2
                         int alt160=2;
 11974  2
                         int LA160_0 = input.LA(1);
 11975  2
                         if ( (LA160_0==Identifier) ) {
 11976  2
                                 alt160=1;
 11977  
                         }
 11978  0
                         else if ( (LA160_0==62||LA160_0==64||LA160_0==67||LA160_0==72||LA160_0==78||LA160_0==84||LA160_0==86||LA160_0==95) ) {
 11979  0
                                 alt160=2;
 11980  
                         }
 11981  
 
 11982  
                         else {
 11983  0
                                 if (state.backtracking>0) {state.failed=true; return retval;}
 11984  0
                                 NoViableAltException nvae =
 11985  
                                         new NoViableAltException("", 160, 0, input);
 11986  0
                                 throw nvae;
 11987  
                         }
 11988  
 
 11989  2
                         switch (alt160) {
 11990  
                                 case 1 :
 11991  
                                         // org/argouml/language/java/reveng/Java.g:1538:9: classOrInterfaceType
 11992  
                                         {
 11993  2
                                         pushFollow(FOLLOW_classOrInterfaceType_in_createdName7297);
 11994  2
                                         classOrInterfaceType();
 11995  2
                                         state._fsp--;
 11996  2
                                         if (state.failed) return retval;
 11997  
                                         }
 11998  
                                         break;
 11999  
                                 case 2 :
 12000  
                                         // org/argouml/language/java/reveng/Java.g:1539:9: primitiveType
 12001  
                                         {
 12002  0
                                         pushFollow(FOLLOW_primitiveType_in_createdName7307);
 12003  0
                                         primitiveType();
 12004  0
                                         state._fsp--;
 12005  0
                                         if (state.failed) return retval;
 12006  
                                         }
 12007  
                                         break;
 12008  
 
 12009  
                         }
 12010  2
                         retval.stop = input.LT(-1);
 12011  
 
 12012  
                 }
 12013  0
                 catch (RecognitionException re) {
 12014  0
                         reportError(re);
 12015  0
                         recover(input,re);
 12016  
                 }
 12017  
                 finally {
 12018  
                         // do for sure before leaving
 12019  2
                         if ( state.backtracking>0 ) { memoize(input, 128, createdName_StartIndex); }
 12020  
 
 12021  0
                 }
 12022  2
                 return retval;
 12023  
         }
 12024  
         // $ANTLR end "createdName"
 12025  
 
 12026  
 
 12027  
 
 12028  
         // $ANTLR start "innerCreator"
 12029  
         // org/argouml/language/java/reveng/Java.g:1542:1: innerCreator : ( nonWildcardTypeArguments )? t= Identifier classCreatorRest[$t.text] ;
 12030  
         public final void innerCreator() throws RecognitionException {
 12031  0
                 int innerCreator_StartIndex = input.index();
 12032  
 
 12033  0
                 Token t=null;
 12034  
 
 12035  
                 try {
 12036  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 129) ) { return; }
 12037  
 
 12038  
                         // org/argouml/language/java/reveng/Java.g:1543:5: ( ( nonWildcardTypeArguments )? t= Identifier classCreatorRest[$t.text] )
 12039  
                         // org/argouml/language/java/reveng/Java.g:1543:9: ( nonWildcardTypeArguments )? t= Identifier classCreatorRest[$t.text]
 12040  
                         {
 12041  
                         // org/argouml/language/java/reveng/Java.g:1543:9: ( nonWildcardTypeArguments )?
 12042  0
                         int alt161=2;
 12043  0
                         int LA161_0 = input.LA(1);
 12044  0
                         if ( (LA161_0==51) ) {
 12045  0
                                 alt161=1;
 12046  
                         }
 12047  0
                         switch (alt161) {
 12048  
                                 case 1 :
 12049  
                                         // org/argouml/language/java/reveng/Java.g:1543:10: nonWildcardTypeArguments
 12050  
                                         {
 12051  0
                                         pushFollow(FOLLOW_nonWildcardTypeArguments_in_innerCreator7331);
 12052  0
                                         nonWildcardTypeArguments();
 12053  0
                                         state._fsp--;
 12054  0
                                         if (state.failed) return;
 12055  
                                         }
 12056  
                                         break;
 12057  
 
 12058  
                         }
 12059  
 
 12060  0
                         t=(Token)match(input,Identifier,FOLLOW_Identifier_in_innerCreator7337); if (state.failed) return;
 12061  0
                         pushFollow(FOLLOW_classCreatorRest_in_innerCreator7339);
 12062  0
                         classCreatorRest((t!=null?t.getText():null));
 12063  0
                         state._fsp--;
 12064  0
                         if (state.failed) return;
 12065  
                         }
 12066  
 
 12067  
                 }
 12068  0
                 catch (RecognitionException re) {
 12069  0
                         reportError(re);
 12070  0
                         recover(input,re);
 12071  
                 }
 12072  
                 finally {
 12073  
                         // do for sure before leaving
 12074  0
                         if ( state.backtracking>0 ) { memoize(input, 129, innerCreator_StartIndex); }
 12075  
 
 12076  0
                 }
 12077  0
         }
 12078  
         // $ANTLR end "innerCreator"
 12079  
 
 12080  
 
 12081  
 
 12082  
         // $ANTLR start "arrayCreatorRest"
 12083  
         // org/argouml/language/java/reveng/Java.g:1546:1: arrayCreatorRest : '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) ;
 12084  
         public final void arrayCreatorRest() throws RecognitionException {
 12085  0
                 int arrayCreatorRest_StartIndex = input.index();
 12086  
 
 12087  
                 try {
 12088  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 130) ) { return; }
 12089  
 
 12090  
                         // org/argouml/language/java/reveng/Java.g:1547:5: ( '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* ) )
 12091  
                         // org/argouml/language/java/reveng/Java.g:1547:9: '[' ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
 12092  
                         {
 12093  0
                         match(input,57,FOLLOW_57_in_arrayCreatorRest7359); if (state.failed) return;
 12094  
                         // org/argouml/language/java/reveng/Java.g:1548:9: ( ']' ( '[' ']' )* arrayInitializer | expression ']' ( '[' expression ']' )* ( '[' ']' )* )
 12095  0
                         int alt165=2;
 12096  0
                         int LA165_0 = input.LA(1);
 12097  0
                         if ( (LA165_0==58) ) {
 12098  0
                                 alt165=1;
 12099  
                         }
 12100  0
                         else if ( ((LA165_0 >= CharacterLiteral && LA165_0 <= DecimalLiteral)||LA165_0==FloatingPointLiteral||(LA165_0 >= HexLiteral && LA165_0 <= Identifier)||(LA165_0 >= OctalLiteral && LA165_0 <= StringLiteral)||LA165_0==27||LA165_0==34||(LA165_0 >= 38 && LA165_0 <= 39)||(LA165_0 >= 42 && LA165_0 <= 43)||LA165_0==62||LA165_0==64||LA165_0==67||LA165_0==72||LA165_0==75||LA165_0==78||LA165_0==84||LA165_0==86||(LA165_0 >= 88 && LA165_0 <= 89)||LA165_0==95||LA165_0==98||LA165_0==101||LA165_0==105||LA165_0==107||LA165_0==115) ) {
 12101  0
                                 alt165=2;
 12102  
                         }
 12103  
 
 12104  
                         else {
 12105  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 12106  0
                                 NoViableAltException nvae =
 12107  
                                         new NoViableAltException("", 165, 0, input);
 12108  0
                                 throw nvae;
 12109  
                         }
 12110  
 
 12111  0
                         switch (alt165) {
 12112  
                                 case 1 :
 12113  
                                         // org/argouml/language/java/reveng/Java.g:1548:13: ']' ( '[' ']' )* arrayInitializer
 12114  
                                         {
 12115  0
                                         match(input,58,FOLLOW_58_in_arrayCreatorRest7373); if (state.failed) return;
 12116  
                                         // org/argouml/language/java/reveng/Java.g:1548:17: ( '[' ']' )*
 12117  
                                         loop162:
 12118  
                                         while (true) {
 12119  0
                                                 int alt162=2;
 12120  0
                                                 int LA162_0 = input.LA(1);
 12121  0
                                                 if ( (LA162_0==57) ) {
 12122  0
                                                         alt162=1;
 12123  
                                                 }
 12124  
 
 12125  0
                                                 switch (alt162) {
 12126  
                                                 case 1 :
 12127  
                                                         // org/argouml/language/java/reveng/Java.g:1548:18: '[' ']'
 12128  
                                                         {
 12129  0
                                                         match(input,57,FOLLOW_57_in_arrayCreatorRest7376); if (state.failed) return;
 12130  0
                                                         match(input,58,FOLLOW_58_in_arrayCreatorRest7378); if (state.failed) return;
 12131  
                                                         }
 12132  
                                                         break;
 12133  
 
 12134  
                                                 default :
 12135  0
                                                         break loop162;
 12136  
                                                 }
 12137  0
                                         }
 12138  
 
 12139  0
                                         pushFollow(FOLLOW_arrayInitializer_in_arrayCreatorRest7382);
 12140  0
                                         arrayInitializer();
 12141  0
                                         state._fsp--;
 12142  0
                                         if (state.failed) return;
 12143  
                                         }
 12144  
                                         break;
 12145  
                                 case 2 :
 12146  
                                         // org/argouml/language/java/reveng/Java.g:1549:13: expression ']' ( '[' expression ']' )* ( '[' ']' )*
 12147  
                                         {
 12148  0
                                         pushFollow(FOLLOW_expression_in_arrayCreatorRest7396);
 12149  0
                                         expression();
 12150  0
                                         state._fsp--;
 12151  0
                                         if (state.failed) return;
 12152  0
                                         match(input,58,FOLLOW_58_in_arrayCreatorRest7398); if (state.failed) return;
 12153  
                                         // org/argouml/language/java/reveng/Java.g:1549:28: ( '[' expression ']' )*
 12154  
                                         loop163:
 12155  
                                         while (true) {
 12156  0
                                                 int alt163=2;
 12157  0
                                                 int LA163_0 = input.LA(1);
 12158  0
                                                 if ( (LA163_0==57) ) {
 12159  0
                                                         switch ( input.LA(2) ) {
 12160  
                                                         case 38:
 12161  
                                                                 {
 12162  0
                                                                 int LA163_33 = input.LA(3);
 12163  0
                                                                 if ( (synpred263_Java()) ) {
 12164  0
                                                                         alt163=1;
 12165  
                                                                 }
 12166  
 
 12167  
                                                                 }
 12168  0
                                                                 break;
 12169  
                                                         case 42:
 12170  
                                                                 {
 12171  0
                                                                 int LA163_34 = input.LA(3);
 12172  0
                                                                 if ( (synpred263_Java()) ) {
 12173  0
                                                                         alt163=1;
 12174  
                                                                 }
 12175  
 
 12176  
                                                                 }
 12177  0
                                                                 break;
 12178  
                                                         case 39:
 12179  
                                                                 {
 12180  0
                                                                 int LA163_35 = input.LA(3);
 12181  0
                                                                 if ( (synpred263_Java()) ) {
 12182  0
                                                                         alt163=1;
 12183  
                                                                 }
 12184  
 
 12185  
                                                                 }
 12186  0
                                                                 break;
 12187  
                                                         case 43:
 12188  
                                                                 {
 12189  0
                                                                 int LA163_36 = input.LA(3);
 12190  0
                                                                 if ( (synpred263_Java()) ) {
 12191  0
                                                                         alt163=1;
 12192  
                                                                 }
 12193  
 
 12194  
                                                                 }
 12195  0
                                                                 break;
 12196  
                                                         case 115:
 12197  
                                                                 {
 12198  0
                                                                 int LA163_37 = input.LA(3);
 12199  0
                                                                 if ( (synpred263_Java()) ) {
 12200  0
                                                                         alt163=1;
 12201  
                                                                 }
 12202  
 
 12203  
                                                                 }
 12204  0
                                                                 break;
 12205  
                                                         case 27:
 12206  
                                                                 {
 12207  0
                                                                 int LA163_38 = input.LA(3);
 12208  0
                                                                 if ( (synpred263_Java()) ) {
 12209  0
                                                                         alt163=1;
 12210  
                                                                 }
 12211  
 
 12212  
                                                                 }
 12213  0
                                                                 break;
 12214  
                                                         case 34:
 12215  
                                                                 {
 12216  0
                                                                 int LA163_39 = input.LA(3);
 12217  0
                                                                 if ( (synpred263_Java()) ) {
 12218  0
                                                                         alt163=1;
 12219  
                                                                 }
 12220  
 
 12221  
                                                                 }
 12222  0
                                                                 break;
 12223  
                                                         case 101:
 12224  
                                                                 {
 12225  0
                                                                 int LA163_40 = input.LA(3);
 12226  0
                                                                 if ( (synpred263_Java()) ) {
 12227  0
                                                                         alt163=1;
 12228  
                                                                 }
 12229  
 
 12230  
                                                                 }
 12231  0
                                                                 break;
 12232  
                                                         case 98:
 12233  
                                                                 {
 12234  0
                                                                 int LA163_41 = input.LA(3);
 12235  0
                                                                 if ( (synpred263_Java()) ) {
 12236  0
                                                                         alt163=1;
 12237  
                                                                 }
 12238  
 
 12239  
                                                                 }
 12240  0
                                                                 break;
 12241  
                                                         case DecimalLiteral:
 12242  
                                                         case HexLiteral:
 12243  
                                                         case OctalLiteral:
 12244  
                                                                 {
 12245  0
                                                                 int LA163_42 = input.LA(3);
 12246  0
                                                                 if ( (synpred263_Java()) ) {
 12247  0
                                                                         alt163=1;
 12248  
                                                                 }
 12249  
 
 12250  
                                                                 }
 12251  0
                                                                 break;
 12252  
                                                         case FloatingPointLiteral:
 12253  
                                                                 {
 12254  0
                                                                 int LA163_43 = input.LA(3);
 12255  0
                                                                 if ( (synpred263_Java()) ) {
 12256  0
                                                                         alt163=1;
 12257  
                                                                 }
 12258  
 
 12259  
                                                                 }
 12260  0
                                                                 break;
 12261  
                                                         case CharacterLiteral:
 12262  
                                                                 {
 12263  0
                                                                 int LA163_44 = input.LA(3);
 12264  0
                                                                 if ( (synpred263_Java()) ) {
 12265  0
                                                                         alt163=1;
 12266  
                                                                 }
 12267  
 
 12268  
                                                                 }
 12269  0
                                                                 break;
 12270  
                                                         case StringLiteral:
 12271  
                                                                 {
 12272  0
                                                                 int LA163_45 = input.LA(3);
 12273  0
                                                                 if ( (synpred263_Java()) ) {
 12274  0
                                                                         alt163=1;
 12275  
                                                                 }
 12276  
 
 12277  
                                                                 }
 12278  0
                                                                 break;
 12279  
                                                         case 75:
 12280  
                                                         case 105:
 12281  
                                                                 {
 12282  0
                                                                 int LA163_46 = input.LA(3);
 12283  0
                                                                 if ( (synpred263_Java()) ) {
 12284  0
                                                                         alt163=1;
 12285  
                                                                 }
 12286  
 
 12287  
                                                                 }
 12288  0
                                                                 break;
 12289  
                                                         case 89:
 12290  
                                                                 {
 12291  0
                                                                 int LA163_47 = input.LA(3);
 12292  0
                                                                 if ( (synpred263_Java()) ) {
 12293  0
                                                                         alt163=1;
 12294  
                                                                 }
 12295  
 
 12296  
                                                                 }
 12297  0
                                                                 break;
 12298  
                                                         case 88:
 12299  
                                                                 {
 12300  0
                                                                 int LA163_48 = input.LA(3);
 12301  0
                                                                 if ( (synpred263_Java()) ) {
 12302  0
                                                                         alt163=1;
 12303  
                                                                 }
 12304  
 
 12305  
                                                                 }
 12306  0
                                                                 break;
 12307  
                                                         case Identifier:
 12308  
                                                                 {
 12309  0
                                                                 int LA163_49 = input.LA(3);
 12310  0
                                                                 if ( (synpred263_Java()) ) {
 12311  0
                                                                         alt163=1;
 12312  
                                                                 }
 12313  
 
 12314  
                                                                 }
 12315  0
                                                                 break;
 12316  
                                                         case 62:
 12317  
                                                         case 64:
 12318  
                                                         case 67:
 12319  
                                                         case 72:
 12320  
                                                         case 78:
 12321  
                                                         case 84:
 12322  
                                                         case 86:
 12323  
                                                         case 95:
 12324  
                                                                 {
 12325  0
                                                                 int LA163_50 = input.LA(3);
 12326  0
                                                                 if ( (synpred263_Java()) ) {
 12327  0
                                                                         alt163=1;
 12328  
                                                                 }
 12329  
 
 12330  
                                                                 }
 12331  0
                                                                 break;
 12332  
                                                         case 107:
 12333  
                                                                 {
 12334  0
                                                                 int LA163_51 = input.LA(3);
 12335  0
                                                                 if ( (synpred263_Java()) ) {
 12336  0
                                                                         alt163=1;
 12337  
                                                                 }
 12338  
 
 12339  
                                                                 }
 12340  
                                                                 break;
 12341  
                                                         }
 12342  
                                                 }
 12343  
 
 12344  0
                                                 switch (alt163) {
 12345  
                                                 case 1 :
 12346  
                                                         // org/argouml/language/java/reveng/Java.g:1549:29: '[' expression ']'
 12347  
                                                         {
 12348  0
                                                         match(input,57,FOLLOW_57_in_arrayCreatorRest7401); if (state.failed) return;
 12349  0
                                                         pushFollow(FOLLOW_expression_in_arrayCreatorRest7403);
 12350  0
                                                         expression();
 12351  0
                                                         state._fsp--;
 12352  0
                                                         if (state.failed) return;
 12353  0
                                                         match(input,58,FOLLOW_58_in_arrayCreatorRest7405); if (state.failed) return;
 12354  
                                                         }
 12355  
                                                         break;
 12356  
 
 12357  
                                                 default :
 12358  0
                                                         break loop163;
 12359  
                                                 }
 12360  0
                                         }
 12361  
 
 12362  
                                         // org/argouml/language/java/reveng/Java.g:1549:50: ( '[' ']' )*
 12363  
                                         loop164:
 12364  
                                         while (true) {
 12365  0
                                                 int alt164=2;
 12366  0
                                                 int LA164_0 = input.LA(1);
 12367  0
                                                 if ( (LA164_0==57) ) {
 12368  0
                                                         int LA164_2 = input.LA(2);
 12369  0
                                                         if ( (LA164_2==58) ) {
 12370  0
                                                                 alt164=1;
 12371  
                                                         }
 12372  
 
 12373  
                                                 }
 12374  
 
 12375  0
                                                 switch (alt164) {
 12376  
                                                 case 1 :
 12377  
                                                         // org/argouml/language/java/reveng/Java.g:1549:51: '[' ']'
 12378  
                                                         {
 12379  0
                                                         match(input,57,FOLLOW_57_in_arrayCreatorRest7410); if (state.failed) return;
 12380  0
                                                         match(input,58,FOLLOW_58_in_arrayCreatorRest7412); if (state.failed) return;
 12381  
                                                         }
 12382  
                                                         break;
 12383  
 
 12384  
                                                 default :
 12385  0
                                                         break loop164;
 12386  
                                                 }
 12387  0
                                         }
 12388  
 
 12389  
                                         }
 12390  
                                         break;
 12391  
 
 12392  
                         }
 12393  
 
 12394  
                         }
 12395  
 
 12396  
                 }
 12397  0
                 catch (RecognitionException re) {
 12398  0
                         reportError(re);
 12399  0
                         recover(input,re);
 12400  
                 }
 12401  
                 finally {
 12402  
                         // do for sure before leaving
 12403  0
                         if ( state.backtracking>0 ) { memoize(input, 130, arrayCreatorRest_StartIndex); }
 12404  
 
 12405  0
                 }
 12406  0
         }
 12407  
         // $ANTLR end "arrayCreatorRest"
 12408  
 
 12409  
 
 12410  
 
 12411  
         // $ANTLR start "classCreatorRest"
 12412  
         // org/argouml/language/java/reveng/Java.g:1553:1: classCreatorRest[String t] : arguments ( classBody )? ;
 12413  
         public final void classCreatorRest(String t) throws RecognitionException {
 12414  2
                 int classCreatorRest_StartIndex = input.index();
 12415  
 
 12416  
                 try {
 12417  2
                         if ( state.backtracking>0 && alreadyParsedRule(input, 131) ) { return; }
 12418  
 
 12419  
                         // org/argouml/language/java/reveng/Java.g:1554:5: ( arguments ( classBody )? )
 12420  
                         // org/argouml/language/java/reveng/Java.g:1554:9: arguments ( classBody )?
 12421  
                         {
 12422  2
                         pushFollow(FOLLOW_arguments_in_classCreatorRest7444);
 12423  2
                         arguments();
 12424  2
                         state._fsp--;
 12425  2
                         if (state.failed) return;
 12426  2
                         if ( state.backtracking==0 ) { if ((parserMode & MODE_REVENG_SEQUENCE) != 0) {
 12427  0
                                     StringBuffer sb = new StringBuffer();
 12428  0
                                     if (";".equals(input.LT(1).getText()) && createdObjectVarName != null) {
 12429  0
                                       sb.append(createdObjectVarName).append('=');
 12430  
                                     }
 12431  0
                                     sb.append("new ").append(t);
 12432  0
                                     getModeller().addCall(sb.toString());
 12433  
                                   }
 12434  
                                 }
 12435  
                         // org/argouml/language/java/reveng/Java.g:1564:9: ( classBody )?
 12436  2
                         int alt166=2;
 12437  2
                         int LA166_0 = input.LA(1);
 12438  2
                         if ( (LA166_0==110) ) {
 12439  0
                                 alt166=1;
 12440  
                         }
 12441  2
                         switch (alt166) {
 12442  
                                 case 1 :
 12443  
                                         // org/argouml/language/java/reveng/Java.g:1565:13: classBody
 12444  
                                         {
 12445  0
                                         if ( state.backtracking==0 ) {
 12446  0
                                                         getModeller().addAnonymousClass(t,
 12447  
                                                             (parserMode == MODE_IMPORT_PASS2));
 12448  
                                                     }
 12449  0
                                         pushFollow(FOLLOW_classBody_in_classCreatorRest7492);
 12450  0
                                         classBody();
 12451  0
                                         state._fsp--;
 12452  0
                                         if (state.failed) return;
 12453  0
                                         if ( state.backtracking==0 ) {
 12454  0
                                                         getModeller().popClassifier();
 12455  
                                                     }
 12456  
                                         }
 12457  
                                         break;
 12458  
 
 12459  
                         }
 12460  
 
 12461  
                         }
 12462  
 
 12463  
                 }
 12464  0
                 catch (RecognitionException re) {
 12465  0
                         reportError(re);
 12466  0
                         recover(input,re);
 12467  
                 }
 12468  
                 finally {
 12469  
                         // do for sure before leaving
 12470  2
                         if ( state.backtracking>0 ) { memoize(input, 131, classCreatorRest_StartIndex); }
 12471  
 
 12472  0
                 }
 12473  2
         }
 12474  
         // $ANTLR end "classCreatorRest"
 12475  
 
 12476  
 
 12477  
 
 12478  
         // $ANTLR start "explicitGenericInvocation"
 12479  
         // org/argouml/language/java/reveng/Java.g:1576:1: explicitGenericInvocation : nonWildcardTypeArguments Identifier arguments ;
 12480  
         public final void explicitGenericInvocation() throws RecognitionException {
 12481  0
                 int explicitGenericInvocation_StartIndex = input.index();
 12482  
 
 12483  
                 try {
 12484  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 132) ) { return; }
 12485  
 
 12486  
                         // org/argouml/language/java/reveng/Java.g:1577:5: ( nonWildcardTypeArguments Identifier arguments )
 12487  
                         // org/argouml/language/java/reveng/Java.g:1577:9: nonWildcardTypeArguments Identifier arguments
 12488  
                         {
 12489  0
                         pushFollow(FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation7540);
 12490  0
                         nonWildcardTypeArguments();
 12491  0
                         state._fsp--;
 12492  0
                         if (state.failed) return;
 12493  0
                         match(input,Identifier,FOLLOW_Identifier_in_explicitGenericInvocation7542); if (state.failed) return;
 12494  0
                         pushFollow(FOLLOW_arguments_in_explicitGenericInvocation7544);
 12495  0
                         arguments();
 12496  0
                         state._fsp--;
 12497  0
                         if (state.failed) return;
 12498  
                         }
 12499  
 
 12500  
                 }
 12501  0
                 catch (RecognitionException re) {
 12502  0
                         reportError(re);
 12503  0
                         recover(input,re);
 12504  
                 }
 12505  
                 finally {
 12506  
                         // do for sure before leaving
 12507  0
                         if ( state.backtracking>0 ) { memoize(input, 132, explicitGenericInvocation_StartIndex); }
 12508  
 
 12509  0
                 }
 12510  0
         }
 12511  
         // $ANTLR end "explicitGenericInvocation"
 12512  
 
 12513  
 
 12514  
 
 12515  
         // $ANTLR start "nonWildcardTypeArguments"
 12516  
         // org/argouml/language/java/reveng/Java.g:1580:1: nonWildcardTypeArguments : '<' typeList '>' ;
 12517  
         public final void nonWildcardTypeArguments() throws RecognitionException {
 12518  0
                 int nonWildcardTypeArguments_StartIndex = input.index();
 12519  
 
 12520  
                 try {
 12521  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 133) ) { return; }
 12522  
 
 12523  
                         // org/argouml/language/java/reveng/Java.g:1581:5: ( '<' typeList '>' )
 12524  
                         // org/argouml/language/java/reveng/Java.g:1581:9: '<' typeList '>'
 12525  
                         {
 12526  0
                         match(input,51,FOLLOW_51_in_nonWildcardTypeArguments7567); if (state.failed) return;
 12527  0
                         pushFollow(FOLLOW_typeList_in_nonWildcardTypeArguments7569);
 12528  0
                         typeList();
 12529  0
                         state._fsp--;
 12530  0
                         if (state.failed) return;
 12531  0
                         match(input,54,FOLLOW_54_in_nonWildcardTypeArguments7571); if (state.failed) return;
 12532  
                         }
 12533  
 
 12534  
                 }
 12535  0
                 catch (RecognitionException re) {
 12536  0
                         reportError(re);
 12537  0
                         recover(input,re);
 12538  
                 }
 12539  
                 finally {
 12540  
                         // do for sure before leaving
 12541  0
                         if ( state.backtracking>0 ) { memoize(input, 133, nonWildcardTypeArguments_StartIndex); }
 12542  
 
 12543  0
                 }
 12544  0
         }
 12545  
         // $ANTLR end "nonWildcardTypeArguments"
 12546  
 
 12547  
 
 12548  
 
 12549  
         // $ANTLR start "selector"
 12550  
         // org/argouml/language/java/reveng/Java.g:1584:1: selector : ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' innerCreator | '[' expression ']' );
 12551  
         public final void selector() throws RecognitionException {
 12552  0
                 int selector_StartIndex = input.index();
 12553  
 
 12554  
                 try {
 12555  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 134) ) { return; }
 12556  
 
 12557  
                         // org/argouml/language/java/reveng/Java.g:1585:5: ( '.' Identifier ( arguments )? | '.' 'this' | '.' 'super' superSuffix | '.' 'new' innerCreator | '[' expression ']' )
 12558  0
                         int alt168=5;
 12559  0
                         int LA168_0 = input.LA(1);
 12560  0
                         if ( (LA168_0==45) ) {
 12561  0
                                 switch ( input.LA(2) ) {
 12562  
                                 case Identifier:
 12563  
                                         {
 12564  0
                                         alt168=1;
 12565  
                                         }
 12566  0
                                         break;
 12567  
                                 case 101:
 12568  
                                         {
 12569  0
                                         alt168=2;
 12570  
                                         }
 12571  0
                                         break;
 12572  
                                 case 98:
 12573  
                                         {
 12574  0
                                         alt168=3;
 12575  
                                         }
 12576  0
                                         break;
 12577  
                                 case 88:
 12578  
                                         {
 12579  0
                                         alt168=4;
 12580  
                                         }
 12581  0
                                         break;
 12582  
                                 default:
 12583  0
                                         if (state.backtracking>0) {state.failed=true; return;}
 12584  0
                                         int nvaeMark = input.mark();
 12585  
                                         try {
 12586  0
                                                 input.consume();
 12587  0
                                                 NoViableAltException nvae =
 12588  
                                                         new NoViableAltException("", 168, 1, input);
 12589  0
                                                 throw nvae;
 12590  
                                         } finally {
 12591  0
                                                 input.rewind(nvaeMark);
 12592  0
                                         }
 12593  
                                 }
 12594  
                         }
 12595  0
                         else if ( (LA168_0==57) ) {
 12596  0
                                 alt168=5;
 12597  
                         }
 12598  
 
 12599  
                         else {
 12600  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 12601  0
                                 NoViableAltException nvae =
 12602  
                                         new NoViableAltException("", 168, 0, input);
 12603  0
                                 throw nvae;
 12604  
                         }
 12605  
 
 12606  0
                         switch (alt168) {
 12607  
                                 case 1 :
 12608  
                                         // org/argouml/language/java/reveng/Java.g:1585:9: '.' Identifier ( arguments )?
 12609  
                                         {
 12610  0
                                         match(input,45,FOLLOW_45_in_selector7594); if (state.failed) return;
 12611  0
                                         match(input,Identifier,FOLLOW_Identifier_in_selector7596); if (state.failed) return;
 12612  
                                         // org/argouml/language/java/reveng/Java.g:1585:24: ( arguments )?
 12613  0
                                         int alt167=2;
 12614  0
                                         int LA167_0 = input.LA(1);
 12615  0
                                         if ( (LA167_0==34) ) {
 12616  0
                                                 alt167=1;
 12617  
                                         }
 12618  0
                                         switch (alt167) {
 12619  
                                                 case 1 :
 12620  
                                                         // org/argouml/language/java/reveng/Java.g:1585:25: arguments
 12621  
                                                         {
 12622  0
                                                         pushFollow(FOLLOW_arguments_in_selector7599);
 12623  0
                                                         arguments();
 12624  0
                                                         state._fsp--;
 12625  0
                                                         if (state.failed) return;
 12626  
                                                         }
 12627  
                                                         break;
 12628  
 
 12629  
                                         }
 12630  
 
 12631  
                                         }
 12632  0
                                         break;
 12633  
                                 case 2 :
 12634  
                                         // org/argouml/language/java/reveng/Java.g:1586:9: '.' 'this'
 12635  
                                         {
 12636  0
                                         match(input,45,FOLLOW_45_in_selector7611); if (state.failed) return;
 12637  0
                                         match(input,101,FOLLOW_101_in_selector7613); if (state.failed) return;
 12638  
                                         }
 12639  
                                         break;
 12640  
                                 case 3 :
 12641  
                                         // org/argouml/language/java/reveng/Java.g:1587:9: '.' 'super' superSuffix
 12642  
                                         {
 12643  0
                                         match(input,45,FOLLOW_45_in_selector7623); if (state.failed) return;
 12644  0
                                         match(input,98,FOLLOW_98_in_selector7625); if (state.failed) return;
 12645  0
                                         pushFollow(FOLLOW_superSuffix_in_selector7627);
 12646  0
                                         superSuffix();
 12647  0
                                         state._fsp--;
 12648  0
                                         if (state.failed) return;
 12649  
                                         }
 12650  
                                         break;
 12651  
                                 case 4 :
 12652  
                                         // org/argouml/language/java/reveng/Java.g:1588:9: '.' 'new' innerCreator
 12653  
                                         {
 12654  0
                                         match(input,45,FOLLOW_45_in_selector7637); if (state.failed) return;
 12655  0
                                         match(input,88,FOLLOW_88_in_selector7639); if (state.failed) return;
 12656  0
                                         pushFollow(FOLLOW_innerCreator_in_selector7641);
 12657  0
                                         innerCreator();
 12658  0
                                         state._fsp--;
 12659  0
                                         if (state.failed) return;
 12660  
                                         }
 12661  
                                         break;
 12662  
                                 case 5 :
 12663  
                                         // org/argouml/language/java/reveng/Java.g:1589:9: '[' expression ']'
 12664  
                                         {
 12665  0
                                         match(input,57,FOLLOW_57_in_selector7651); if (state.failed) return;
 12666  0
                                         pushFollow(FOLLOW_expression_in_selector7653);
 12667  0
                                         expression();
 12668  0
                                         state._fsp--;
 12669  0
                                         if (state.failed) return;
 12670  0
                                         match(input,58,FOLLOW_58_in_selector7655); if (state.failed) return;
 12671  
                                         }
 12672  
                                         break;
 12673  
 
 12674  
                         }
 12675  
                 }
 12676  0
                 catch (RecognitionException re) {
 12677  0
                         reportError(re);
 12678  0
                         recover(input,re);
 12679  
                 }
 12680  
                 finally {
 12681  
                         // do for sure before leaving
 12682  0
                         if ( state.backtracking>0 ) { memoize(input, 134, selector_StartIndex); }
 12683  
 
 12684  0
                 }
 12685  0
         }
 12686  
         // $ANTLR end "selector"
 12687  
 
 12688  
 
 12689  
 
 12690  
         // $ANTLR start "superSuffix"
 12691  
         // org/argouml/language/java/reveng/Java.g:1592:1: superSuffix : ( arguments | '.' Identifier ( arguments )? );
 12692  
         public final void superSuffix() throws RecognitionException {
 12693  0
                 int superSuffix_StartIndex = input.index();
 12694  
 
 12695  
                 try {
 12696  0
                         if ( state.backtracking>0 && alreadyParsedRule(input, 135) ) { return; }
 12697  
 
 12698  
                         // org/argouml/language/java/reveng/Java.g:1593:5: ( arguments | '.' Identifier ( arguments )? )
 12699  0
                         int alt170=2;
 12700  0
                         int LA170_0 = input.LA(1);
 12701  0
                         if ( (LA170_0==34) ) {
 12702  0
                                 alt170=1;
 12703  
                         }
 12704  0
                         else if ( (LA170_0==45) ) {
 12705  0
                                 alt170=2;
 12706  
                         }
 12707  
 
 12708  
                         else {
 12709  0
                                 if (state.backtracking>0) {state.failed=true; return;}
 12710  0
                                 NoViableAltException nvae =
 12711  
                                         new NoViableAltException("", 170, 0, input);
 12712  0
                                 throw nvae;
 12713  
                         }
 12714  
 
 12715  0
                         switch (alt170) {
 12716  
                                 case 1 :
 12717  
                                         // org/argouml/language/java/reveng/Java.g:1593:9: arguments
 12718  
                                         {
 12719  0
                                         pushFollow(FOLLOW_arguments_in_superSuffix7678);
 12720  0
                                         arguments();
 12721  0
                                         state._fsp--;
 12722  0
                                         if (state.failed) return;
 12723  
                                         }
 12724  
                                         break;
 12725  
                                 case 2 :
 12726  
                                         // org/argouml/language/java/reveng/Java.g:1594:9: '.' Identifier ( arguments )?
 12727  
                                         {
 12728  0
                                         match(input,45,FOLLOW_45_in_superSuffix7688); if (state.failed) return;
 12729  0
                                         match(input,Identifier,FOLLOW_Identifier_in_superSuffix7690); if (state.failed) return;
 12730  
                                         // org/argouml/language/java/reveng/Java.g:1594:24: ( arguments )?
 12731  0
                                         int alt169=2;
 12732  0
                                         int LA169_0 = input.LA(1);
 12733  0
                                         if ( (LA169_0==34) ) {
 12734  0
                                                 alt169=1;
 12735  
                                         }
 12736  0
                                         switch (alt169) {
 12737  
                                                 case 1 :
 12738  
                                                         // org/argouml/language/java/reveng/Java.g:1594:25: arguments
 12739  
                                                         {
 12740  0
                                                         pushFollow(FOLLOW_arguments_in_superSuffix7693);
 12741  0
                                                         arguments();
 12742  0
                                                         state._fsp--;
 12743  0
                                                         if (state.failed) return;
 12744  
                                                         }
 12745  
                                                         break;
 12746  
 
 12747  
                                         }
 12748  
 
 12749  
                                         }
 12750  
                                         break;
 12751  
 
 12752  
                         }
 12753  
                 }
 12754  0
                 catch (RecognitionException re) {
 12755  0
                         reportError(re);
 12756  0
                         recover(input,re);
 12757  
                 }
 12758  
                 finally {
 12759  
                         // do for sure before leaving
 12760  0
                         if ( state.backtracking>0 ) { memoize(input, 135, superSuffix_StartIndex); }
 12761  
 
 12762  0
                 }
 12763  0
         }
 12764  
         // $ANTLR end "superSuffix"
 12765  
 
 12766  
 
 12767  
 
 12768  
         // $ANTLR start "arguments"
 12769  
         // org/argouml/language/java/reveng/Java.g:1597:1: arguments : '(' ( expressionList )? ')' ;
 12770  
         public final void arguments() throws RecognitionException {
 12771  8
                 int arguments_StartIndex = input.index();
 12772  
 
 12773  
                 try {
 12774  8
                         if ( state.backtracking>0 && alreadyParsedRule(input, 136) ) { return; }
 12775  
 
 12776  
                         // org/argouml/language/java/reveng/Java.g:1598:5: ( '(' ( expressionList )? ')' )
 12777  
                         // org/argouml/language/java/reveng/Java.g:1598:9: '(' ( expressionList )? ')'
 12778  
                         {
 12779  8
                         match(input,34,FOLLOW_34_in_arguments7714); if (state.failed) return;
 12780  
                         // org/argouml/language/java/reveng/Java.g:1598:13: ( expressionList )?
 12781  8
                         int alt171=2;
 12782  8
                         int LA171_0 = input.LA(1);
 12783  8
                         if ( ((LA171_0 >= CharacterLiteral && LA171_0 <= DecimalLiteral)||LA171_0==FloatingPointLiteral||(LA171_0 >= HexLiteral && LA171_0 <= Identifier)||(LA171_0 >= OctalLiteral && LA171_0 <= StringLiteral)||LA171_0==27||LA171_0==34||(LA171_0 >= 38 && LA171_0 <= 39)||(LA171_0 >= 42 && LA171_0 <= 43)||LA171_0==62||LA171_0==64||LA171_0==67||LA171_0==72||LA171_0==75||LA171_0==78||LA171_0==84||LA171_0==86||(LA171_0 >= 88 && LA171_0 <= 89)||LA171_0==95||LA171_0==98||LA171_0==101||LA171_0==105||LA171_0==107||LA171_0==115) ) {
 12784  8
                                 alt171=1;
 12785  
                         }
 12786  8
                         switch (alt171) {
 12787  
                                 case 1 :
 12788  
                                         // org/argouml/language/java/reveng/Java.g:1598:13: expressionList
 12789  
                                         {
 12790  8
                                         pushFollow(FOLLOW_expressionList_in_arguments7716);
 12791  8
                                         expressionList();
 12792  8
                                         state._fsp--;
 12793  8
                                         if (state.failed) return;
 12794  
                                         }
 12795  
                                         break;
 12796  
 
 12797  
                         }
 12798  
 
 12799  8
                         match(input,35,FOLLOW_35_in_arguments7719); if (state.failed) return;
 12800  
                         }
 12801  
 
 12802  
                 }
 12803  0
                 catch (RecognitionException re) {
 12804  0
                         reportError(re);
 12805  0
                         recover(input,re);
 12806  
                 }
 12807  
                 finally {
 12808  
                         // do for sure before leaving
 12809  8
                         if ( state.backtracking>0 ) { memoize(input, 136, arguments_StartIndex); }
 12810  
 
 12811  0
                 }
 12812  8
         }
 12813  
         // $ANTLR end "arguments"
 12814  
 
 12815  
         // $ANTLR start synpred1_Java
 12816  
         public final void synpred1_Java_fragment() throws RecognitionException {
 12817  
                 // org/argouml/language/java/reveng/Java.g:433:9: ( '@' )
 12818  
                 // org/argouml/language/java/reveng/Java.g:433:10: '@'
 12819  
                 {
 12820  0
                 match(input,56,FOLLOW_56_in_synpred1_Java108); if (state.failed) return;
 12821  
                 }
 12822  
 
 12823  0
         }
 12824  
         // $ANTLR end synpred1_Java
 12825  
 
 12826  
         // $ANTLR start synpred114_Java
 12827  
         public final void synpred114_Java_fragment() throws RecognitionException {
 12828  
                 // org/argouml/language/java/reveng/Java.g:1096:13: ( explicitConstructorInvocation )
 12829  
                 // org/argouml/language/java/reveng/Java.g:1096:13: explicitConstructorInvocation
 12830  
                 {
 12831  9
                 pushFollow(FOLLOW_explicitConstructorInvocation_in_synpred114_Java4163);
 12832  9
                 explicitConstructorInvocation();
 12833  9
                 state._fsp--;
 12834  9
                 if (state.failed) return;
 12835  
                 }
 12836  
 
 12837  0
         }
 12838  
         // $ANTLR end synpred114_Java
 12839  
 
 12840  
         // $ANTLR start synpred118_Java
 12841  
         public final void synpred118_Java_fragment() throws RecognitionException {
 12842  
                 // org/argouml/language/java/reveng/Java.g:1111:9: ( ( nonWildcardTypeArguments )? ( 'this' | 'super' ) arguments ';' )
 12843  
                 // org/argouml/language/java/reveng/Java.g:1111:9: ( nonWildcardTypeArguments )? ( 'this' | 'super' ) arguments ';'
 12844  
                 {
 12845  
                 // org/argouml/language/java/reveng/Java.g:1111:9: ( nonWildcardTypeArguments )?
 12846  0
                 int alt181=2;
 12847  0
                 int LA181_0 = input.LA(1);
 12848  0
                 if ( (LA181_0==51) ) {
 12849  0
                         alt181=1;
 12850  
                 }
 12851  0
                 switch (alt181) {
 12852  
                         case 1 :
 12853  
                                 // org/argouml/language/java/reveng/Java.g:1111:10: nonWildcardTypeArguments
 12854  
                                 {
 12855  0
                                 pushFollow(FOLLOW_nonWildcardTypeArguments_in_synpred118_Java4199);
 12856  0
                                 nonWildcardTypeArguments();
 12857  0
                                 state._fsp--;
 12858  0
                                 if (state.failed) return;
 12859  
                                 }
 12860  
                                 break;
 12861  
 
 12862  
                 }
 12863  
 
 12864  0
                 if ( input.LA(1)==98||input.LA(1)==101 ) {
 12865  0
                         input.consume();
 12866  0
                         state.errorRecovery=false;
 12867  0
                         state.failed=false;
 12868  
                 }
 12869  
                 else {
 12870  0
                         if (state.backtracking>0) {state.failed=true; return;}
 12871  0
                         MismatchedSetException mse = new MismatchedSetException(null,input);
 12872  0
                         throw mse;
 12873  
                 }
 12874  0
                 pushFollow(FOLLOW_arguments_in_synpred118_Java4211);
 12875  0
                 arguments();
 12876  0
                 state._fsp--;
 12877  0
                 if (state.failed) return;
 12878  0
                 match(input,50,FOLLOW_50_in_synpred118_Java4213); if (state.failed) return;
 12879  
                 }
 12880  
 
 12881  0
         }
 12882  
         // $ANTLR end synpred118_Java
 12883  
 
 12884  
         // $ANTLR start synpred129_Java
 12885  
         public final void synpred129_Java_fragment() throws RecognitionException {
 12886  
                 // org/argouml/language/java/reveng/Java.g:1143:9: ( annotation )
 12887  
                 // org/argouml/language/java/reveng/Java.g:1143:9: annotation
 12888  
                 {
 12889  0
                 pushFollow(FOLLOW_annotation_in_synpred129_Java4424);
 12890  0
                 annotation();
 12891  0
                 state._fsp--;
 12892  0
                 if (state.failed) return;
 12893  
                 }
 12894  
 
 12895  0
         }
 12896  
         // $ANTLR end synpred129_Java
 12897  
 
 12898  
         // $ANTLR start synpred152_Java
 12899  
         public final void synpred152_Java_fragment() throws RecognitionException {
 12900  
                 // org/argouml/language/java/reveng/Java.g:1248:9: ( localVariableDeclarationStatement )
 12901  
                 // org/argouml/language/java/reveng/Java.g:1248:9: localVariableDeclarationStatement
 12902  
                 {
 12903  0
                 pushFollow(FOLLOW_localVariableDeclarationStatement_in_synpred152_Java5018);
 12904  0
                 localVariableDeclarationStatement();
 12905  0
                 state._fsp--;
 12906  0
                 if (state.failed) return;
 12907  
                 }
 12908  
 
 12909  0
         }
 12910  
         // $ANTLR end synpred152_Java
 12911  
 
 12912  
         // $ANTLR start synpred153_Java
 12913  
         public final void synpred153_Java_fragment() throws RecognitionException {
 12914  
                 // org/argouml/language/java/reveng/Java.g:1249:9: ( classOrInterfaceDeclaration )
 12915  
                 // org/argouml/language/java/reveng/Java.g:1249:9: classOrInterfaceDeclaration
 12916  
                 {
 12917  0
                 pushFollow(FOLLOW_classOrInterfaceDeclaration_in_synpred153_Java5028);
 12918  0
                 classOrInterfaceDeclaration();
 12919  0
                 state._fsp--;
 12920  0
                 if (state.failed) return;
 12921  
                 }
 12922  
 
 12923  0
         }
 12924  
         // $ANTLR end synpred153_Java
 12925  
 
 12926  
         // $ANTLR start synpred158_Java
 12927  
         public final void synpred158_Java_fragment() throws RecognitionException {
 12928  
                 // org/argouml/language/java/reveng/Java.g:1276:54: ( 'else' statement )
 12929  
                 // org/argouml/language/java/reveng/Java.g:1276:54: 'else' statement
 12930  
                 {
 12931  0
                 match(input,73,FOLLOW_73_in_synpred158_Java5199); if (state.failed) return;
 12932  0
                 pushFollow(FOLLOW_statement_in_synpred158_Java5201);
 12933  0
                 statement();
 12934  0
                 state._fsp--;
 12935  0
                 if (state.failed) return;
 12936  
                 }
 12937  
 
 12938  0
         }
 12939  
         // $ANTLR end synpred158_Java
 12940  
 
 12941  
         // $ANTLR start synpred163_Java
 12942  
         public final void synpred163_Java_fragment() throws RecognitionException {
 12943  
                 // org/argouml/language/java/reveng/Java.g:1281:11: ( catches 'finally' block )
 12944  
                 // org/argouml/language/java/reveng/Java.g:1281:11: catches 'finally' block
 12945  
                 {
 12946  0
                 pushFollow(FOLLOW_catches_in_synpred163_Java5277);
 12947  0
                 catches();
 12948  0
                 state._fsp--;
 12949  0
                 if (state.failed) return;
 12950  0
                 match(input,77,FOLLOW_77_in_synpred163_Java5279); if (state.failed) return;
 12951  0
                 pushFollow(FOLLOW_block_in_synpred163_Java5281);
 12952  0
                 block();
 12953  0
                 state._fsp--;
 12954  0
                 if (state.failed) return;
 12955  
                 }
 12956  
 
 12957  0
         }
 12958  
         // $ANTLR end synpred163_Java
 12959  
 
 12960  
         // $ANTLR start synpred164_Java
 12961  
         public final void synpred164_Java_fragment() throws RecognitionException {
 12962  
                 // org/argouml/language/java/reveng/Java.g:1282:11: ( catches )
 12963  
                 // org/argouml/language/java/reveng/Java.g:1282:11: catches
 12964  
                 {
 12965  0
                 pushFollow(FOLLOW_catches_in_synpred164_Java5293);
 12966  0
                 catches();
 12967  0
                 state._fsp--;
 12968  0
                 if (state.failed) return;
 12969  
                 }
 12970  
 
 12971  0
         }
 12972  
         // $ANTLR end synpred164_Java
 12973  
 
 12974  
         // $ANTLR start synpred179_Java
 12975  
         public final void synpred179_Java_fragment() throws RecognitionException {
 12976  
                 // org/argouml/language/java/reveng/Java.g:1317:9: ( switchLabel )
 12977  
                 // org/argouml/language/java/reveng/Java.g:1317:9: switchLabel
 12978  
                 {
 12979  8
                 pushFollow(FOLLOW_switchLabel_in_synpred179_Java5584);
 12980  8
                 switchLabel();
 12981  8
                 state._fsp--;
 12982  8
                 if (state.failed) return;
 12983  
                 }
 12984  
 
 12985  8
         }
 12986  
         // $ANTLR end synpred179_Java
 12987  
 
 12988  
         // $ANTLR start synpred181_Java
 12989  
         public final void synpred181_Java_fragment() throws RecognitionException {
 12990  
                 // org/argouml/language/java/reveng/Java.g:1321:9: ( 'case' constantExpression ':' )
 12991  
                 // org/argouml/language/java/reveng/Java.g:1321:9: 'case' constantExpression ':'
 12992  
                 {
 12993  0
                 match(input,65,FOLLOW_65_in_synpred181_Java5611); if (state.failed) return;
 12994  0
                 pushFollow(FOLLOW_constantExpression_in_synpred181_Java5613);
 12995  0
                 constantExpression();
 12996  0
                 state._fsp--;
 12997  0
                 if (state.failed) return;
 12998  0
                 match(input,49,FOLLOW_49_in_synpred181_Java5615); if (state.failed) return;
 12999  
                 }
 13000  
 
 13001  0
         }
 13002  
         // $ANTLR end synpred181_Java
 13003  
 
 13004  
         // $ANTLR start synpred182_Java
 13005  
         public final void synpred182_Java_fragment() throws RecognitionException {
 13006  
                 // org/argouml/language/java/reveng/Java.g:1322:9: ( 'case' enumConstantName ':' )
 13007  
                 // org/argouml/language/java/reveng/Java.g:1322:9: 'case' enumConstantName ':'
 13008  
                 {
 13009  0
                 match(input,65,FOLLOW_65_in_synpred182_Java5625); if (state.failed) return;
 13010  0
                 pushFollow(FOLLOW_enumConstantName_in_synpred182_Java5627);
 13011  0
                 enumConstantName();
 13012  0
                 state._fsp--;
 13013  0
                 if (state.failed) return;
 13014  0
                 match(input,49,FOLLOW_49_in_synpred182_Java5629); if (state.failed) return;
 13015  
                 }
 13016  
 
 13017  0
         }
 13018  
         // $ANTLR end synpred182_Java
 13019  
 
 13020  
         // $ANTLR start synpred183_Java
 13021  
         public final void synpred183_Java_fragment() throws RecognitionException {
 13022  
                 // org/argouml/language/java/reveng/Java.g:1328:9: ( enhancedForControl )
 13023  
                 // org/argouml/language/java/reveng/Java.g:1328:9: enhancedForControl
 13024  
                 {
 13025  0
                 pushFollow(FOLLOW_enhancedForControl_in_synpred183_Java5672);
 13026  0
                 enhancedForControl();
 13027  0
                 state._fsp--;
 13028  0
                 if (state.failed) return;
 13029  
                 }
 13030  
 
 13031  0
         }
 13032  
         // $ANTLR end synpred183_Java
 13033  
 
 13034  
         // $ANTLR start synpred187_Java
 13035  
         public final void synpred187_Java_fragment() throws RecognitionException {
 13036  
                 // org/argouml/language/java/reveng/Java.g:1333:9: ( localVariableDeclaration )
 13037  
                 // org/argouml/language/java/reveng/Java.g:1333:9: localVariableDeclaration
 13038  
                 {
 13039  0
                 pushFollow(FOLLOW_localVariableDeclaration_in_synpred187_Java5712);
 13040  0
                 localVariableDeclaration();
 13041  0
                 state._fsp--;
 13042  0
                 if (state.failed) return;
 13043  
                 }
 13044  
 
 13045  0
         }
 13046  
         // $ANTLR end synpred187_Java
 13047  
 
 13048  
         // $ANTLR start synpred189_Java
 13049  
         public final void synpred189_Java_fragment() throws RecognitionException {
 13050  
                 // org/argouml/language/java/reveng/Java.g:1365:32: ( assignmentOperator expression )
 13051  
                 // org/argouml/language/java/reveng/Java.g:1365:32: assignmentOperator expression
 13052  
                 {
 13053  21
                 pushFollow(FOLLOW_assignmentOperator_in_synpred189_Java5904);
 13054  21
                 assignmentOperator();
 13055  21
                 state._fsp--;
 13056  21
                 if (state.failed) return;
 13057  21
                 pushFollow(FOLLOW_expression_in_synpred189_Java5906);
 13058  21
                 expression();
 13059  21
                 state._fsp--;
 13060  21
                 if (state.failed) return;
 13061  
                 }
 13062  
 
 13063  21
         }
 13064  
         // $ANTLR end synpred189_Java
 13065  
 
 13066  
         // $ANTLR start synpred199_Java
 13067  
         public final void synpred199_Java_fragment() throws RecognitionException {
 13068  
                 // org/argouml/language/java/reveng/Java.g:1378:9: ( '<' '<' '=' )
 13069  
                 // org/argouml/language/java/reveng/Java.g:1378:10: '<' '<' '='
 13070  
                 {
 13071  0
                 match(input,51,FOLLOW_51_in_synpred199_Java6022); if (state.failed) return;
 13072  0
                 match(input,51,FOLLOW_51_in_synpred199_Java6024); if (state.failed) return;
 13073  0
                 match(input,52,FOLLOW_52_in_synpred199_Java6026); if (state.failed) return;
 13074  
                 }
 13075  
 
 13076  0
         }
 13077  
         // $ANTLR end synpred199_Java
 13078  
 
 13079  
         // $ANTLR start synpred200_Java
 13080  
         public final void synpred200_Java_fragment() throws RecognitionException {
 13081  
                 // org/argouml/language/java/reveng/Java.g:1383:9: ( '>' '>' '>' '=' )
 13082  
                 // org/argouml/language/java/reveng/Java.g:1383:10: '>' '>' '>' '='
 13083  
                 {
 13084  0
                 match(input,54,FOLLOW_54_in_synpred200_Java6062); if (state.failed) return;
 13085  0
                 match(input,54,FOLLOW_54_in_synpred200_Java6064); if (state.failed) return;
 13086  0
                 match(input,54,FOLLOW_54_in_synpred200_Java6066); if (state.failed) return;
 13087  0
                 match(input,52,FOLLOW_52_in_synpred200_Java6068); if (state.failed) return;
 13088  
                 }
 13089  
 
 13090  0
         }
 13091  
         // $ANTLR end synpred200_Java
 13092  
 
 13093  
         // $ANTLR start synpred201_Java
 13094  
         public final void synpred201_Java_fragment() throws RecognitionException {
 13095  
                 // org/argouml/language/java/reveng/Java.g:1390:9: ( '>' '>' '=' )
 13096  
                 // org/argouml/language/java/reveng/Java.g:1390:10: '>' '>' '='
 13097  
                 {
 13098  0
                 match(input,54,FOLLOW_54_in_synpred201_Java6107); if (state.failed) return;
 13099  0
                 match(input,54,FOLLOW_54_in_synpred201_Java6109); if (state.failed) return;
 13100  0
                 match(input,52,FOLLOW_52_in_synpred201_Java6111); if (state.failed) return;
 13101  
                 }
 13102  
 
 13103  0
         }
 13104  
         // $ANTLR end synpred201_Java
 13105  
 
 13106  
         // $ANTLR start synpred212_Java
 13107  
         public final void synpred212_Java_fragment() throws RecognitionException {
 13108  
                 // org/argouml/language/java/reveng/Java.g:1434:9: ( '<' '=' )
 13109  
                 // org/argouml/language/java/reveng/Java.g:1434:10: '<' '='
 13110  
                 {
 13111  0
                 match(input,51,FOLLOW_51_in_synpred212_Java6419); if (state.failed) return;
 13112  0
                 match(input,52,FOLLOW_52_in_synpred212_Java6421); if (state.failed) return;
 13113  
                 }
 13114  
 
 13115  0
         }
 13116  
         // $ANTLR end synpred212_Java
 13117  
 
 13118  
         // $ANTLR start synpred213_Java
 13119  
         public final void synpred213_Java_fragment() throws RecognitionException {
 13120  
                 // org/argouml/language/java/reveng/Java.g:1437:9: ( '>' '=' )
 13121  
                 // org/argouml/language/java/reveng/Java.g:1437:10: '>' '='
 13122  
                 {
 13123  0
                 match(input,54,FOLLOW_54_in_synpred213_Java6453); if (state.failed) return;
 13124  0
                 match(input,52,FOLLOW_52_in_synpred213_Java6455); if (state.failed) return;
 13125  
                 }
 13126  
 
 13127  0
         }
 13128  
         // $ANTLR end synpred213_Java
 13129  
 
 13130  
         // $ANTLR start synpred215_Java
 13131  
         public final void synpred215_Java_fragment() throws RecognitionException {
 13132  
                 // org/argouml/language/java/reveng/Java.g:1445:30: ( shiftOp additiveExpression )
 13133  
                 // org/argouml/language/java/reveng/Java.g:1445:30: shiftOp additiveExpression
 13134  
                 {
 13135  0
                 pushFollow(FOLLOW_shiftOp_in_synpred215_Java6521);
 13136  0
                 shiftOp();
 13137  0
                 state._fsp--;
 13138  0
                 if (state.failed) return;
 13139  0
                 pushFollow(FOLLOW_additiveExpression_in_synpred215_Java6523);
 13140  0
                 additiveExpression();
 13141  0
                 state._fsp--;
 13142  0
                 if (state.failed) return;
 13143  
                 }
 13144  
 
 13145  0
         }
 13146  
         // $ANTLR end synpred215_Java
 13147  
 
 13148  
         // $ANTLR start synpred216_Java
 13149  
         public final void synpred216_Java_fragment() throws RecognitionException {
 13150  
                 // org/argouml/language/java/reveng/Java.g:1449:9: ( '<' '<' )
 13151  
                 // org/argouml/language/java/reveng/Java.g:1449:10: '<' '<'
 13152  
                 {
 13153  0
                 match(input,51,FOLLOW_51_in_synpred216_Java6546); if (state.failed) return;
 13154  0
                 match(input,51,FOLLOW_51_in_synpred216_Java6548); if (state.failed) return;
 13155  
                 }
 13156  
 
 13157  0
         }
 13158  
         // $ANTLR end synpred216_Java
 13159  
 
 13160  
         // $ANTLR start synpred217_Java
 13161  
         public final void synpred217_Java_fragment() throws RecognitionException {
 13162  
                 // org/argouml/language/java/reveng/Java.g:1452:9: ( '>' '>' '>' )
 13163  
                 // org/argouml/language/java/reveng/Java.g:1452:10: '>' '>' '>'
 13164  
                 {
 13165  0
                 match(input,54,FOLLOW_54_in_synpred217_Java6580); if (state.failed) return;
 13166  0
                 match(input,54,FOLLOW_54_in_synpred217_Java6582); if (state.failed) return;
 13167  0
                 match(input,54,FOLLOW_54_in_synpred217_Java6584); if (state.failed) return;
 13168  
                 }
 13169  
 
 13170  0
         }
 13171  
         // $ANTLR end synpred217_Java
 13172  
 
 13173  
         // $ANTLR start synpred218_Java
 13174  
         public final void synpred218_Java_fragment() throws RecognitionException {
 13175  
                 // org/argouml/language/java/reveng/Java.g:1457:9: ( '>' '>' )
 13176  
                 // org/argouml/language/java/reveng/Java.g:1457:10: '>' '>'
 13177  
                 {
 13178  0
                 match(input,54,FOLLOW_54_in_synpred218_Java6620); if (state.failed) return;
 13179  0
                 match(input,54,FOLLOW_54_in_synpred218_Java6622); if (state.failed) return;
 13180  
                 }
 13181  
 
 13182  0
         }
 13183  
         // $ANTLR end synpred218_Java
 13184  
 
 13185  
         // $ANTLR start synpred230_Java
 13186  
         public final void synpred230_Java_fragment() throws RecognitionException {
 13187  
                 // org/argouml/language/java/reveng/Java.g:1482:9: ( castExpression )
 13188  
                 // org/argouml/language/java/reveng/Java.g:1482:9: castExpression
 13189  
                 {
 13190  30
                 pushFollow(FOLLOW_castExpression_in_synpred230_Java6831);
 13191  30
                 castExpression();
 13192  30
                 state._fsp--;
 13193  30
                 if (state.failed) return;
 13194  
                 }
 13195  
 
 13196  30
         }
 13197  
         // $ANTLR end synpred230_Java
 13198  
 
 13199  
         // $ANTLR start synpred234_Java
 13200  
         public final void synpred234_Java_fragment() throws RecognitionException {
 13201  
                 // org/argouml/language/java/reveng/Java.g:1487:8: ( '(' primitiveType ')' unaryExpression )
 13202  
                 // org/argouml/language/java/reveng/Java.g:1487:8: '(' primitiveType ')' unaryExpression
 13203  
                 {
 13204  12
                 match(input,34,FOLLOW_34_in_synpred234_Java6869); if (state.failed) return;
 13205  12
                 pushFollow(FOLLOW_primitiveType_in_synpred234_Java6871);
 13206  12
                 primitiveType();
 13207  12
                 state._fsp--;
 13208  12
                 if (state.failed) return;
 13209  12
                 match(input,35,FOLLOW_35_in_synpred234_Java6873); if (state.failed) return;
 13210  12
                 pushFollow(FOLLOW_unaryExpression_in_synpred234_Java6875);
 13211  12
                 unaryExpression();
 13212  12
                 state._fsp--;
 13213  12
                 if (state.failed) return;
 13214  
                 }
 13215  
 
 13216  12
         }
 13217  
         // $ANTLR end synpred234_Java
 13218  
 
 13219  
         // $ANTLR start synpred235_Java
 13220  
         public final void synpred235_Java_fragment() throws RecognitionException {
 13221  
                 // org/argouml/language/java/reveng/Java.g:1488:13: ( type )
 13222  
                 // org/argouml/language/java/reveng/Java.g:1488:13: type
 13223  
                 {
 13224  24
                 pushFollow(FOLLOW_type_in_synpred235_Java6887);
 13225  24
                 type();
 13226  24
                 state._fsp--;
 13227  24
                 if (state.failed) return;
 13228  
                 }
 13229  
 
 13230  24
         }
 13231  
         // $ANTLR end synpred235_Java
 13232  
 
 13233  
         // $ANTLR start synpred237_Java
 13234  
         public final void synpred237_Java_fragment() throws RecognitionException {
 13235  20
                 Token id=null;
 13236  
 
 13237  
                 // org/argouml/language/java/reveng/Java.g:1497:17: ( '.' id= Identifier )
 13238  
                 // org/argouml/language/java/reveng/Java.g:1497:17: '.' id= Identifier
 13239  
                 {
 13240  20
                 match(input,45,FOLLOW_45_in_synpred237_Java6936); if (state.failed) return;
 13241  20
                 id=(Token)match(input,Identifier,FOLLOW_Identifier_in_synpred237_Java6940); if (state.failed) return;
 13242  
                 }
 13243  
 
 13244  20
         }
 13245  
         // $ANTLR end synpred237_Java
 13246  
 
 13247  
         // $ANTLR start synpred238_Java
 13248  
         public final void synpred238_Java_fragment() throws RecognitionException {
 13249  
                 // org/argouml/language/java/reveng/Java.g:1498:10: ( identifierSuffix )
 13250  
                 // org/argouml/language/java/reveng/Java.g:1498:10: identifierSuffix
 13251  
                 {
 13252  0
                 pushFollow(FOLLOW_identifierSuffix_in_synpred238_Java6956);
 13253  0
                 identifierSuffix();
 13254  0
                 state._fsp--;
 13255  0
                 if (state.failed) return;
 13256  
                 }
 13257  
 
 13258  0
         }
 13259  
         // $ANTLR end synpred238_Java
 13260  
 
 13261  
         // $ANTLR start synpred243_Java
 13262  
         public final void synpred243_Java_fragment() throws RecognitionException {
 13263  0
                 Token id=null;
 13264  
 
 13265  
                 // org/argouml/language/java/reveng/Java.g:1511:10: ( '.' id= Identifier )
 13266  
                 // org/argouml/language/java/reveng/Java.g:1511:10: '.' id= Identifier
 13267  
                 {
 13268  0
                 match(input,45,FOLLOW_45_in_synpred243_Java7041); if (state.failed) return;
 13269  0
                 id=(Token)match(input,Identifier,FOLLOW_Identifier_in_synpred243_Java7045); if (state.failed) return;
 13270  
                 }
 13271  
 
 13272  0
         }
 13273  
         // $ANTLR end synpred243_Java
 13274  
 
 13275  
         // $ANTLR start synpred244_Java
 13276  
         public final void synpred244_Java_fragment() throws RecognitionException {
 13277  
                 // org/argouml/language/java/reveng/Java.g:1512:10: ( identifierSuffix )
 13278  
                 // org/argouml/language/java/reveng/Java.g:1512:10: identifierSuffix
 13279  
                 {
 13280  0
                 pushFollow(FOLLOW_identifierSuffix_in_synpred244_Java7061);
 13281  0
                 identifierSuffix();
 13282  0
                 state._fsp--;
 13283  0
                 if (state.failed) return;
 13284  
                 }
 13285  
 
 13286  0
         }
 13287  
         // $ANTLR end synpred244_Java
 13288  
 
 13289  
         // $ANTLR start synpred250_Java
 13290  
         public final void synpred250_Java_fragment() throws RecognitionException {
 13291  
                 // org/argouml/language/java/reveng/Java.g:1523:10: ( '[' expression ']' )
 13292  
                 // org/argouml/language/java/reveng/Java.g:1523:10: '[' expression ']'
 13293  
                 {
 13294  0
                 match(input,57,FOLLOW_57_in_synpred250_Java7150); if (state.failed) return;
 13295  0
                 pushFollow(FOLLOW_expression_in_synpred250_Java7152);
 13296  0
                 expression();
 13297  0
                 state._fsp--;
 13298  0
                 if (state.failed) return;
 13299  0
                 match(input,58,FOLLOW_58_in_synpred250_Java7154); if (state.failed) return;
 13300  
                 }
 13301  
 
 13302  0
         }
 13303  
         // $ANTLR end synpred250_Java
 13304  
 
 13305  
         // $ANTLR start synpred263_Java
 13306  
         public final void synpred263_Java_fragment() throws RecognitionException {
 13307  
                 // org/argouml/language/java/reveng/Java.g:1549:29: ( '[' expression ']' )
 13308  
                 // org/argouml/language/java/reveng/Java.g:1549:29: '[' expression ']'
 13309  
                 {
 13310  0
                 match(input,57,FOLLOW_57_in_synpred263_Java7401); if (state.failed) return;
 13311  0
                 pushFollow(FOLLOW_expression_in_synpred263_Java7403);
 13312  0
                 expression();
 13313  0
                 state._fsp--;
 13314  0
                 if (state.failed) return;
 13315  0
                 match(input,58,FOLLOW_58_in_synpred263_Java7405); if (state.failed) return;
 13316  
                 }
 13317  
 
 13318  0
         }
 13319  
         // $ANTLR end synpred263_Java
 13320  
 
 13321  
         // Delegated rules
 13322  
 
 13323  
         public final boolean synpred164_Java() {
 13324  0
                 state.backtracking++;
 13325  0
                 int start = input.mark();
 13326  
                 try {
 13327  0
                         synpred164_Java_fragment(); // can never throw exception
 13328  0
                 } catch (RecognitionException re) {
 13329  0
                         System.err.println("impossible: "+re);
 13330  0
                 }
 13331  0
                 boolean success = !state.failed;
 13332  0
                 input.rewind(start);
 13333  0
                 state.backtracking--;
 13334  0
                 state.failed=false;
 13335  0
                 return success;
 13336  
         }
 13337  
         public final boolean synpred153_Java() {
 13338  0
                 state.backtracking++;
 13339  0
                 int start = input.mark();
 13340  
                 try {
 13341  0
                         synpred153_Java_fragment(); // can never throw exception
 13342  0
                 } catch (RecognitionException re) {
 13343  0
                         System.err.println("impossible: "+re);
 13344  0
                 }
 13345  0
                 boolean success = !state.failed;
 13346  0
                 input.rewind(start);
 13347  0
                 state.backtracking--;
 13348  0
                 state.failed=false;
 13349  0
                 return success;
 13350  
         }
 13351  
         public final boolean synpred181_Java() {
 13352  0
                 state.backtracking++;
 13353  0
                 int start = input.mark();
 13354  
                 try {
 13355  0
                         synpred181_Java_fragment(); // can never throw exception
 13356  0
                 } catch (RecognitionException re) {
 13357  0
                         System.err.println("impossible: "+re);
 13358  0
                 }
 13359  0
                 boolean success = !state.failed;
 13360  0
                 input.rewind(start);
 13361  0
                 state.backtracking--;
 13362  0
                 state.failed=false;
 13363  0
                 return success;
 13364  
         }
 13365  
         public final boolean synpred217_Java() {
 13366  0
                 state.backtracking++;
 13367  0
                 int start = input.mark();
 13368  
                 try {
 13369  0
                         synpred217_Java_fragment(); // can never throw exception
 13370  0
                 } catch (RecognitionException re) {
 13371  0
                         System.err.println("impossible: "+re);
 13372  0
                 }
 13373  0
                 boolean success = !state.failed;
 13374  0
                 input.rewind(start);
 13375  0
                 state.backtracking--;
 13376  0
                 state.failed=false;
 13377  0
                 return success;
 13378  
         }
 13379  
         public final boolean synpred1_Java() {
 13380  0
                 state.backtracking++;
 13381  0
                 int start = input.mark();
 13382  
                 try {
 13383  0
                         synpred1_Java_fragment(); // can never throw exception
 13384  0
                 } catch (RecognitionException re) {
 13385  0
                         System.err.println("impossible: "+re);
 13386  0
                 }
 13387  0
                 boolean success = !state.failed;
 13388  0
                 input.rewind(start);
 13389  0
                 state.backtracking--;
 13390  0
                 state.failed=false;
 13391  0
                 return success;
 13392  
         }
 13393  
         public final boolean synpred183_Java() {
 13394  0
                 state.backtracking++;
 13395  0
                 int start = input.mark();
 13396  
                 try {
 13397  0
                         synpred183_Java_fragment(); // can never throw exception
 13398  0
                 } catch (RecognitionException re) {
 13399  0
                         System.err.println("impossible: "+re);
 13400  0
                 }
 13401  0
                 boolean success = !state.failed;
 13402  0
                 input.rewind(start);
 13403  0
                 state.backtracking--;
 13404  0
                 state.failed=false;
 13405  0
                 return success;
 13406  
         }
 13407  
         public final boolean synpred114_Java() {
 13408  9
                 state.backtracking++;
 13409  9
                 int start = input.mark();
 13410  
                 try {
 13411  9
                         synpred114_Java_fragment(); // can never throw exception
 13412  0
                 } catch (RecognitionException re) {
 13413  0
                         System.err.println("impossible: "+re);
 13414  9
                 }
 13415  9
                 boolean success = !state.failed;
 13416  9
                 input.rewind(start);
 13417  9
                 state.backtracking--;
 13418  9
                 state.failed=false;
 13419  9
                 return success;
 13420  
         }
 13421  
         public final boolean synpred230_Java() {
 13422  30
                 state.backtracking++;
 13423  30
                 int start = input.mark();
 13424  
                 try {
 13425  30
                         synpred230_Java_fragment(); // can never throw exception
 13426  0
                 } catch (RecognitionException re) {
 13427  0
                         System.err.println("impossible: "+re);
 13428  30
                 }
 13429  30
                 boolean success = !state.failed;
 13430  30
                 input.rewind(start);
 13431  30
                 state.backtracking--;
 13432  30
                 state.failed=false;
 13433  30
                 return success;
 13434  
         }
 13435  
         public final boolean synpred158_Java() {
 13436  0
                 state.backtracking++;
 13437  0
                 int start = input.mark();
 13438  
                 try {
 13439  0
                         synpred158_Java_fragment(); // can never throw exception
 13440  0
                 } catch (RecognitionException re) {
 13441  0
                         System.err.println("impossible: "+re);
 13442  0
                 }
 13443  0
                 boolean success = !state.failed;
 13444  0
                 input.rewind(start);
 13445  0
                 state.backtracking--;
 13446  0
                 state.failed=false;
 13447  0
                 return success;
 13448  
         }
 13449  
         public final boolean synpred213_Java() {
 13450  0
                 state.backtracking++;
 13451  0
                 int start = input.mark();
 13452  
                 try {
 13453  0
                         synpred213_Java_fragment(); // can never throw exception
 13454  0
                 } catch (RecognitionException re) {
 13455  0
                         System.err.println("impossible: "+re);
 13456  0
                 }
 13457  0
                 boolean success = !state.failed;
 13458  0
                 input.rewind(start);
 13459  0
                 state.backtracking--;
 13460  0
                 state.failed=false;
 13461  0
                 return success;
 13462  
         }
 13463  
         public final boolean synpred216_Java() {
 13464  0
                 state.backtracking++;
 13465  0
                 int start = input.mark();
 13466  
                 try {
 13467  0
                         synpred216_Java_fragment(); // can never throw exception
 13468  0
                 } catch (RecognitionException re) {
 13469  0
                         System.err.println("impossible: "+re);
 13470  0
                 }
 13471  0
                 boolean success = !state.failed;
 13472  0
                 input.rewind(start);
 13473  0
                 state.backtracking--;
 13474  0
                 state.failed=false;
 13475  0
                 return success;
 13476  
         }
 13477  
         public final boolean synpred152_Java() {
 13478  0
                 state.backtracking++;
 13479  0
                 int start = input.mark();
 13480  
                 try {
 13481  0
                         synpred152_Java_fragment(); // can never throw exception
 13482  0
                 } catch (RecognitionException re) {
 13483  0
                         System.err.println("impossible: "+re);
 13484  0
                 }
 13485  0
                 boolean success = !state.failed;
 13486  0
                 input.rewind(start);
 13487  0
                 state.backtracking--;
 13488  0
                 state.failed=false;
 13489  0
                 return success;
 13490  
         }
 13491  
         public final boolean synpred189_Java() {
 13492  21
                 state.backtracking++;
 13493  21
                 int start = input.mark();
 13494  
                 try {
 13495  21
                         synpred189_Java_fragment(); // can never throw exception
 13496  0
                 } catch (RecognitionException re) {
 13497  0
                         System.err.println("impossible: "+re);
 13498  21
                 }
 13499  21
                 boolean success = !state.failed;
 13500  21
                 input.rewind(start);
 13501  21
                 state.backtracking--;
 13502  21
                 state.failed=false;
 13503  21
                 return success;
 13504  
         }
 13505  
         public final boolean synpred244_Java() {
 13506  0
                 state.backtracking++;
 13507  0
                 int start = input.mark();
 13508  
                 try {
 13509  0
                         synpred244_Java_fragment(); // can never throw exception
 13510  0
                 } catch (RecognitionException re) {
 13511  0
                         System.err.println("impossible: "+re);
 13512  0
                 }
 13513  0
                 boolean success = !state.failed;
 13514  0
                 input.rewind(start);
 13515  0
                 state.backtracking--;
 13516  0
                 state.failed=false;
 13517  0
                 return success;
 13518  
         }
 13519  
         public final boolean synpred163_Java() {
 13520  0
                 state.backtracking++;
 13521  0
                 int start = input.mark();
 13522  
                 try {
 13523  0
                         synpred163_Java_fragment(); // can never throw exception
 13524  0
                 } catch (RecognitionException re) {
 13525  0
                         System.err.println("impossible: "+re);
 13526  0
                 }
 13527  0
                 boolean success = !state.failed;
 13528  0
                 input.rewind(start);
 13529  0
                 state.backtracking--;
 13530  0
                 state.failed=false;
 13531  0
                 return success;
 13532  
         }
 13533  
         public final boolean synpred263_Java() {
 13534  0
                 state.backtracking++;
 13535  0
                 int start = input.mark();
 13536  
                 try {
 13537  0
                         synpred263_Java_fragment(); // can never throw exception
 13538  0
                 } catch (RecognitionException re) {
 13539  0
                         System.err.println("impossible: "+re);
 13540  0
                 }
 13541  0
                 boolean success = !state.failed;
 13542  0
                 input.rewind(start);
 13543  0
                 state.backtracking--;
 13544  0
                 state.failed=false;
 13545  0
                 return success;
 13546  
         }
 13547  
         public final boolean synpred201_Java() {
 13548  0
                 state.backtracking++;
 13549  0
                 int start = input.mark();
 13550  
                 try {
 13551  0
                         synpred201_Java_fragment(); // can never throw exception
 13552  0
                 } catch (RecognitionException re) {
 13553  0
                         System.err.println("impossible: "+re);
 13554  0
                 }
 13555  0
                 boolean success = !state.failed;
 13556  0
                 input.rewind(start);
 13557  0
                 state.backtracking--;
 13558  0
                 state.failed=false;
 13559  0
                 return success;
 13560  
         }
 13561  
         public final boolean synpred218_Java() {
 13562  0
                 state.backtracking++;
 13563  0
                 int start = input.mark();
 13564  
                 try {
 13565  0
                         synpred218_Java_fragment(); // can never throw exception
 13566  0
                 } catch (RecognitionException re) {
 13567  0
                         System.err.println("impossible: "+re);
 13568  0
                 }
 13569  0
                 boolean success = !state.failed;
 13570  0
                 input.rewind(start);
 13571  0
                 state.backtracking--;
 13572  0
                 state.failed=false;
 13573  0
                 return success;
 13574  
         }
 13575  
         public final boolean synpred182_Java() {
 13576  0
                 state.backtracking++;
 13577  0
                 int start = input.mark();
 13578  
                 try {
 13579  0
                         synpred182_Java_fragment(); // can never throw exception
 13580  0
                 } catch (RecognitionException re) {
 13581  0
                         System.err.println("impossible: "+re);
 13582  0
                 }
 13583  0
                 boolean success = !state.failed;
 13584  0
                 input.rewind(start);
 13585  0
                 state.backtracking--;
 13586  0
                 state.failed=false;
 13587  0
                 return success;
 13588  
         }
 13589  
         public final boolean synpred243_Java() {
 13590  0
                 state.backtracking++;
 13591  0
                 int start = input.mark();
 13592  
                 try {
 13593  0
                         synpred243_Java_fragment(); // can never throw exception
 13594  0
                 } catch (RecognitionException re) {
 13595  0
                         System.err.println("impossible: "+re);
 13596  0
                 }
 13597  0
                 boolean success = !state.failed;
 13598  0
                 input.rewind(start);
 13599  0
                 state.backtracking--;
 13600  0
                 state.failed=false;
 13601  0
                 return success;
 13602  
         }
 13603  
         public final boolean synpred212_Java() {
 13604  0
                 state.backtracking++;
 13605  0
                 int start = input.mark();
 13606  
                 try {
 13607  0
                         synpred212_Java_fragment(); // can never throw exception
 13608  0
                 } catch (RecognitionException re) {
 13609  0
                         System.err.println("impossible: "+re);
 13610  0
                 }
 13611  0
                 boolean success = !state.failed;
 13612  0
                 input.rewind(start);
 13613  0
                 state.backtracking--;
 13614  0
                 state.failed=false;
 13615  0
                 return success;
 13616  
         }
 13617  
         public final boolean synpred215_Java() {
 13618  0
                 state.backtracking++;
 13619  0
                 int start = input.mark();
 13620  
                 try {
 13621  0
                         synpred215_Java_fragment(); // can never throw exception
 13622  0
                 } catch (RecognitionException re) {
 13623  0
                         System.err.println("impossible: "+re);
 13624  0
                 }
 13625  0
                 boolean success = !state.failed;
 13626  0
                 input.rewind(start);
 13627  0
                 state.backtracking--;
 13628  0
                 state.failed=false;
 13629  0
                 return success;
 13630  
         }
 13631  
         public final boolean synpred235_Java() {
 13632  24
                 state.backtracking++;
 13633  24
                 int start = input.mark();
 13634  
                 try {
 13635  24
                         synpred235_Java_fragment(); // can never throw exception
 13636  0
                 } catch (RecognitionException re) {
 13637  0
                         System.err.println("impossible: "+re);
 13638  24
                 }
 13639  24
                 boolean success = !state.failed;
 13640  24
                 input.rewind(start);
 13641  24
                 state.backtracking--;
 13642  24
                 state.failed=false;
 13643  24
                 return success;
 13644  
         }
 13645  
         public final boolean synpred199_Java() {
 13646  0
                 state.backtracking++;
 13647  0
                 int start = input.mark();
 13648  
                 try {
 13649  0
                         synpred199_Java_fragment(); // can never throw exception
 13650  0
                 } catch (RecognitionException re) {
 13651  0
                         System.err.println("impossible: "+re);
 13652  0
                 }
 13653  0
                 boolean success = !state.failed;
 13654  0
                 input.rewind(start);
 13655  0
                 state.backtracking--;
 13656  0
                 state.failed=false;
 13657  0
                 return success;
 13658  
         }
 13659  
         public final boolean synpred238_Java() {
 13660  0
                 state.backtracking++;
 13661  0
                 int start = input.mark();
 13662  
                 try {
 13663  0
                         synpred238_Java_fragment(); // can never throw exception
 13664  0
                 } catch (RecognitionException re) {
 13665  0
                         System.err.println("impossible: "+re);
 13666  0
                 }
 13667  0
                 boolean success = !state.failed;
 13668  0
                 input.rewind(start);
 13669  0
                 state.backtracking--;
 13670  0
                 state.failed=false;
 13671  0
                 return success;
 13672  
         }
 13673  
         public final boolean synpred237_Java() {
 13674  20
                 state.backtracking++;
 13675  20
                 int start = input.mark();
 13676  
                 try {
 13677  20
                         synpred237_Java_fragment(); // can never throw exception
 13678  0
                 } catch (RecognitionException re) {
 13679  0
                         System.err.println("impossible: "+re);
 13680  20
                 }
 13681  20
                 boolean success = !state.failed;
 13682  20
                 input.rewind(start);
 13683  20
                 state.backtracking--;
 13684  20
                 state.failed=false;
 13685  20
                 return success;
 13686  
         }
 13687  
         public final boolean synpred129_Java() {
 13688  0
                 state.backtracking++;
 13689  0
                 int start = input.mark();
 13690  
                 try {
 13691  0
                         synpred129_Java_fragment(); // can never throw exception
 13692  0
                 } catch (RecognitionException re) {
 13693  0
                         System.err.println("impossible: "+re);
 13694  0
                 }
 13695  0
                 boolean success = !state.failed;
 13696  0
                 input.rewind(start);
 13697  0
                 state.backtracking--;
 13698  0
                 state.failed=false;
 13699  0
                 return success;
 13700  
         }
 13701  
         public final boolean synpred200_Java() {
 13702  0
                 state.backtracking++;
 13703  0
                 int start = input.mark();
 13704  
                 try {
 13705  0
                         synpred200_Java_fragment(); // can never throw exception
 13706  0
                 } catch (RecognitionException re) {
 13707  0
                         System.err.println("impossible: "+re);
 13708  0
                 }
 13709  0
                 boolean success = !state.failed;
 13710  0
                 input.rewind(start);
 13711  0
                 state.backtracking--;
 13712  0
                 state.failed=false;
 13713  0
                 return success;
 13714  
         }
 13715  
         public final boolean synpred118_Java() {
 13716  0
                 state.backtracking++;
 13717  0
                 int start = input.mark();
 13718  
                 try {
 13719  0
                         synpred118_Java_fragment(); // can never throw exception
 13720  0
                 } catch (RecognitionException re) {
 13721  0
                         System.err.println("impossible: "+re);
 13722  0
                 }
 13723  0
                 boolean success = !state.failed;
 13724  0
                 input.rewind(start);
 13725  0
                 state.backtracking--;
 13726  0
                 state.failed=false;
 13727  0
                 return success;
 13728  
         }
 13729  
         public final boolean synpred179_Java() {
 13730  8
                 state.backtracking++;
 13731  8
                 int start = input.mark();
 13732  
                 try {
 13733  8
                         synpred179_Java_fragment(); // can never throw exception
 13734  0
                 } catch (RecognitionException re) {
 13735  0
                         System.err.println("impossible: "+re);
 13736  8
                 }
 13737  8
                 boolean success = !state.failed;
 13738  8
                 input.rewind(start);
 13739  8
                 state.backtracking--;
 13740  8
                 state.failed=false;
 13741  8
                 return success;
 13742  
         }
 13743  
         public final boolean synpred234_Java() {
 13744  12
                 state.backtracking++;
 13745  12
                 int start = input.mark();
 13746  
                 try {
 13747  12
                         synpred234_Java_fragment(); // can never throw exception
 13748  0
                 } catch (RecognitionException re) {
 13749  0
                         System.err.println("impossible: "+re);
 13750  12
                 }
 13751  12
                 boolean success = !state.failed;
 13752  12
                 input.rewind(start);
 13753  12
                 state.backtracking--;
 13754  12
                 state.failed=false;
 13755  12
                 return success;
 13756  
         }
 13757  
         public final boolean synpred187_Java() {
 13758  0
                 state.backtracking++;
 13759  0
                 int start = input.mark();
 13760  
                 try {
 13761  0
                         synpred187_Java_fragment(); // can never throw exception
 13762  0
                 } catch (RecognitionException re) {
 13763  0
                         System.err.println("impossible: "+re);
 13764  0
                 }
 13765  0
                 boolean success = !state.failed;
 13766  0
                 input.rewind(start);
 13767  0
                 state.backtracking--;
 13768  0
                 state.failed=false;
 13769  0
                 return success;
 13770  
         }
 13771  
         public final boolean synpred250_Java() {
 13772  0
                 state.backtracking++;
 13773  0
                 int start = input.mark();
 13774  
                 try {
 13775  0
                         synpred250_Java_fragment(); // can never throw exception
 13776  0
                 } catch (RecognitionException re) {
 13777  0
                         System.err.println("impossible: "+re);
 13778  0
                 }
 13779  0
                 boolean success = !state.failed;
 13780  0
                 input.rewind(start);
 13781  0
                 state.backtracking--;
 13782  0
                 state.failed=false;
 13783  0
                 return success;
 13784  
         }
 13785  
 
 13786  
 
 13787  18
         protected DFA82 dfa82 = new DFA82(this);
 13788  18
         protected DFA107 dfa107 = new DFA107(this);
 13789  18
         protected DFA115 dfa115 = new DFA115(this);
 13790  18
         protected DFA118 dfa118 = new DFA118(this);
 13791  18
         protected DFA124 dfa124 = new DFA124(this);
 13792  18
         protected DFA127 dfa127 = new DFA127(this);
 13793  18
         protected DFA137 dfa137 = new DFA137(this);
 13794  18
         protected DFA139 dfa139 = new DFA139(this);
 13795  
         static final String DFA82_eotS =
 13796  
                 "\u0117\uffff";
 13797  
         static final String DFA82_eofS =
 13798  
                 "\u0117\uffff";
 13799  
         static final String DFA82_minS =
 13800  
                 "\1\4\1\uffff\1\34\1\6\1\42\6\34\3\20\1\55\40\uffff\3\0\27\uffff\26\0\30"+
 13801  
                 "\uffff\1\0\30\uffff\1\0\30\uffff\1\0\30\uffff\1\0\30\uffff\1\0\30\uffff"+
 13802  
                 "\3\0\1\uffff\3\0\30\uffff\2\0\1\uffff\1\0";
 13803  
         static final String DFA82_maxS =
 13804  
                 "\1\163\1\uffff\1\161\1\163\1\55\6\161\1\137\1\161\1\71\1\55\40\uffff\3"+
 13805  
                 "\0\27\uffff\26\0\30\uffff\1\0\30\uffff\1\0\30\uffff\1\0\30\uffff\1\0\30"+
 13806  
                 "\uffff\1\0\30\uffff\3\0\1\uffff\3\0\30\uffff\2\0\1\uffff\1\0";
 13807  
         static final String DFA82_acceptS =
 13808  
                 "\1\uffff\1\1\15\uffff\1\2\u0107\uffff";
 13809  
         static final String DFA82_specialS =
 13810  
                 "\57\uffff\1\0\1\1\1\2\27\uffff\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13"+
 13811  
                 "\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25\1\26\1\27\1\30\30\uffff"+
 13812  
                 "\1\31\30\uffff\1\32\30\uffff\1\33\30\uffff\1\34\30\uffff\1\35\30\uffff"+
 13813  
                 "\1\36\1\37\1\40\1\uffff\1\41\1\42\1\43\30\uffff\1\44\1\45\1\uffff\1\46}>";
 13814  1
         static final String[] DFA82_transitionS = {
 13815  
                         "\1\17\1\uffff\1\7\1\5\1\uffff\1\17\3\uffff\1\6\1\uffff\1\5\1\14\6\uffff"+
 13816  
                         "\1\5\1\10\2\uffff\1\17\6\uffff\1\3\3\uffff\2\17\2\uffff\2\17\6\uffff"+
 13817  
                         "\1\17\1\1\4\uffff\1\17\4\uffff\1\17\1\15\1\17\1\15\2\uffff\1\15\2\17"+
 13818  
                         "\1\uffff\1\17\1\15\2\uffff\1\11\1\17\1\uffff\1\15\2\17\3\uffff\1\15\1"+
 13819  
                         "\17\1\15\1\uffff\1\13\1\12\1\uffff\4\17\1\15\2\17\1\4\2\17\1\2\1\17\2"+
 13820  
                         "\uffff\1\11\1\17\1\16\1\uffff\2\17\3\uffff\2\17",
 13821  
                         "",
 13822  
                         "\6\17\1\57\1\uffff\5\17\1\uffff\3\17\1\60\1\uffff\2\17\1\uffff\6\17"+
 13823  
                         "\1\uffff\1\61\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 13824  
                         "\1\124\1\122\5\uffff\1\123\1\uffff\1\122\1\131\6\uffff\1\122\1\125\2"+
 13825  
                         "\uffff\1\116\6\uffff\1\117\3\uffff\1\111\1\113\2\uffff\1\112\1\114\22"+
 13826  
                         "\uffff\1\132\1\uffff\1\132\2\uffff\1\132\4\uffff\1\132\2\uffff\1\126"+
 13827  
                         "\2\uffff\1\132\5\uffff\1\132\1\uffff\1\132\1\uffff\1\130\1\127\5\uffff"+
 13828  
                         "\1\132\2\uffff\1\121\2\uffff\1\120\3\uffff\1\126\1\uffff\1\133\7\uffff"+
 13829  
                         "\1\115",
 13830  
                         "\1\134\12\uffff\1\135",
 13831  
                         "\6\17\2\uffff\5\17\1\uffff\3\17\1\136\1\uffff\2\17\1\uffff\6\17\1\uffff"+
 13832  
                         "\1\17\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 13833  
                         "\6\17\2\uffff\5\17\1\uffff\3\17\1\167\1\uffff\2\17\1\uffff\6\17\1\uffff"+
 13834  
                         "\1\17\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 13835  
                         "\6\17\2\uffff\5\17\1\uffff\3\17\1\u0090\1\uffff\2\17\1\uffff\6\17\1"+
 13836  
                         "\uffff\1\17\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 13837  
                         "\6\17\2\uffff\5\17\1\uffff\3\17\1\u00a9\1\uffff\2\17\1\uffff\6\17\1"+
 13838  
                         "\uffff\1\17\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 13839  
                         "\6\17\2\uffff\5\17\1\uffff\3\17\1\u00c2\1\uffff\2\17\1\uffff\6\17\1"+
 13840  
                         "\uffff\1\17\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 13841  
                         "\6\17\2\uffff\5\17\1\uffff\3\17\1\u00db\1\uffff\2\17\1\uffff\6\17\1"+
 13842  
                         "\uffff\1\17\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 13843  
                         "\1\u00f5\42\uffff\1\u00f4\12\uffff\1\u00f6\1\uffff\1\u00f6\2\uffff\1"+
 13844  
                         "\u00f6\4\uffff\1\u00f6\5\uffff\1\u00f6\5\uffff\1\u00f6\1\uffff\1\u00f6"+
 13845  
                         "\10\uffff\1\u00f6",
 13846  
                         "\1\17\13\uffff\6\17\1\u00fa\1\uffff\5\17\1\uffff\3\17\1\u00f8\1\uffff"+
 13847  
                         "\11\17\1\uffff\1\u00f9\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 13848  
                         "\1\17\34\uffff\1\u0114\13\uffff\1\u0113",
 13849  
                         "\1\u0116",
 13850  
                         "",
 13851  
                         "",
 13852  
                         "",
 13853  
                         "",
 13854  
                         "",
 13855  
                         "",
 13856  
                         "",
 13857  
                         "",
 13858  
                         "",
 13859  
                         "",
 13860  
                         "",
 13861  
                         "",
 13862  
                         "",
 13863  
                         "",
 13864  
                         "",
 13865  
                         "",
 13866  
                         "",
 13867  
                         "",
 13868  
                         "",
 13869  
                         "",
 13870  
                         "",
 13871  
                         "",
 13872  
                         "",
 13873  
                         "",
 13874  
                         "",
 13875  
                         "",
 13876  
                         "",
 13877  
                         "",
 13878  
                         "",
 13879  
                         "",
 13880  
                         "",
 13881  
                         "",
 13882  
                         "\1\uffff",
 13883  
                         "\1\uffff",
 13884  
                         "\1\uffff",
 13885  
                         "",
 13886  
                         "",
 13887  
                         "",
 13888  
                         "",
 13889  
                         "",
 13890  
                         "",
 13891  
                         "",
 13892  
                         "",
 13893  
                         "",
 13894  
                         "",
 13895  
                         "",
 13896  
                         "",
 13897  
                         "",
 13898  
                         "",
 13899  
                         "",
 13900  
                         "",
 13901  
                         "",
 13902  
                         "",
 13903  
                         "",
 13904  
                         "",
 13905  
                         "",
 13906  
                         "",
 13907  
                         "",
 13908  
                         "\1\uffff",
 13909  
                         "\1\uffff",
 13910  
                         "\1\uffff",
 13911  
                         "\1\uffff",
 13912  
                         "\1\uffff",
 13913  
                         "\1\uffff",
 13914  
                         "\1\uffff",
 13915  
                         "\1\uffff",
 13916  
                         "\1\uffff",
 13917  
                         "\1\uffff",
 13918  
                         "\1\uffff",
 13919  
                         "\1\uffff",
 13920  
                         "\1\uffff",
 13921  
                         "\1\uffff",
 13922  
                         "\1\uffff",
 13923  
                         "\1\uffff",
 13924  
                         "\1\uffff",
 13925  
                         "\1\uffff",
 13926  
                         "\1\uffff",
 13927  
                         "\1\uffff",
 13928  
                         "\1\uffff",
 13929  
                         "\1\uffff",
 13930  
                         "",
 13931  
                         "",
 13932  
                         "",
 13933  
                         "",
 13934  
                         "",
 13935  
                         "",
 13936  
                         "",
 13937  
                         "",
 13938  
                         "",
 13939  
                         "",
 13940  
                         "",
 13941  
                         "",
 13942  
                         "",
 13943  
                         "",
 13944  
                         "",
 13945  
                         "",
 13946  
                         "",
 13947  
                         "",
 13948  
                         "",
 13949  
                         "",
 13950  
                         "",
 13951  
                         "",
 13952  
                         "",
 13953  
                         "",
 13954  
                         "\1\uffff",
 13955  
                         "",
 13956  
                         "",
 13957  
                         "",
 13958  
                         "",
 13959  
                         "",
 13960  
                         "",
 13961  
                         "",
 13962  
                         "",
 13963  
                         "",
 13964  
                         "",
 13965  
                         "",
 13966  
                         "",
 13967  
                         "",
 13968  
                         "",
 13969  
                         "",
 13970  
                         "",
 13971  
                         "",
 13972  
                         "",
 13973  
                         "",
 13974  
                         "",
 13975  
                         "",
 13976  
                         "",
 13977  
                         "",
 13978  
                         "",
 13979  
                         "\1\uffff",
 13980  
                         "",
 13981  
                         "",
 13982  
                         "",
 13983  
                         "",
 13984  
                         "",
 13985  
                         "",
 13986  
                         "",
 13987  
                         "",
 13988  
                         "",
 13989  
                         "",
 13990  
                         "",
 13991  
                         "",
 13992  
                         "",
 13993  
                         "",
 13994  
                         "",
 13995  
                         "",
 13996  
                         "",
 13997  
                         "",
 13998  
                         "",
 13999  
                         "",
 14000  
                         "",
 14001  
                         "",
 14002  
                         "",
 14003  
                         "",
 14004  
                         "\1\uffff",
 14005  
                         "",
 14006  
                         "",
 14007  
                         "",
 14008  
                         "",
 14009  
                         "",
 14010  
                         "",
 14011  
                         "",
 14012  
                         "",
 14013  
                         "",
 14014  
                         "",
 14015  
                         "",
 14016  
                         "",
 14017  
                         "",
 14018  
                         "",
 14019  
                         "",
 14020  
                         "",
 14021  
                         "",
 14022  
                         "",
 14023  
                         "",
 14024  
                         "",
 14025  
                         "",
 14026  
                         "",
 14027  
                         "",
 14028  
                         "",
 14029  
                         "\1\uffff",
 14030  
                         "",
 14031  
                         "",
 14032  
                         "",
 14033  
                         "",
 14034  
                         "",
 14035  
                         "",
 14036  
                         "",
 14037  
                         "",
 14038  
                         "",
 14039  
                         "",
 14040  
                         "",
 14041  
                         "",
 14042  
                         "",
 14043  
                         "",
 14044  
                         "",
 14045  
                         "",
 14046  
                         "",
 14047  
                         "",
 14048  
                         "",
 14049  
                         "",
 14050  
                         "",
 14051  
                         "",
 14052  
                         "",
 14053  
                         "",
 14054  
                         "\1\uffff",
 14055  
                         "",
 14056  
                         "",
 14057  
                         "",
 14058  
                         "",
 14059  
                         "",
 14060  
                         "",
 14061  
                         "",
 14062  
                         "",
 14063  
                         "",
 14064  
                         "",
 14065  
                         "",
 14066  
                         "",
 14067  
                         "",
 14068  
                         "",
 14069  
                         "",
 14070  
                         "",
 14071  
                         "",
 14072  
                         "",
 14073  
                         "",
 14074  
                         "",
 14075  
                         "",
 14076  
                         "",
 14077  
                         "",
 14078  
                         "",
 14079  
                         "\1\uffff",
 14080  
                         "\1\uffff",
 14081  
                         "\1\uffff",
 14082  
                         "",
 14083  
                         "\1\uffff",
 14084  
                         "\1\uffff",
 14085  
                         "\1\uffff",
 14086  
                         "",
 14087  
                         "",
 14088  
                         "",
 14089  
                         "",
 14090  
                         "",
 14091  
                         "",
 14092  
                         "",
 14093  
                         "",
 14094  
                         "",
 14095  
                         "",
 14096  
                         "",
 14097  
                         "",
 14098  
                         "",
 14099  
                         "",
 14100  
                         "",
 14101  
                         "",
 14102  
                         "",
 14103  
                         "",
 14104  
                         "",
 14105  
                         "",
 14106  
                         "",
 14107  
                         "",
 14108  
                         "",
 14109  
                         "",
 14110  
                         "\1\uffff",
 14111  
                         "\1\uffff",
 14112  
                         "",
 14113  
                         "\1\uffff"
 14114  
         };
 14115  
 
 14116  1
         static final short[] DFA82_eot = DFA.unpackEncodedString(DFA82_eotS);
 14117  1
         static final short[] DFA82_eof = DFA.unpackEncodedString(DFA82_eofS);
 14118  1
         static final char[] DFA82_min = DFA.unpackEncodedStringToUnsignedChars(DFA82_minS);
 14119  1
         static final char[] DFA82_max = DFA.unpackEncodedStringToUnsignedChars(DFA82_maxS);
 14120  1
         static final short[] DFA82_accept = DFA.unpackEncodedString(DFA82_acceptS);
 14121  1
         static final short[] DFA82_special = DFA.unpackEncodedString(DFA82_specialS);
 14122  
         static final short[][] DFA82_transition;
 14123  
 
 14124  
         static {
 14125  1
                 int numStates = DFA82_transitionS.length;
 14126  1
                 DFA82_transition = new short[numStates][];
 14127  280
                 for (int i=0; i<numStates; i++) {
 14128  279
                         DFA82_transition[i] = DFA.unpackEncodedString(DFA82_transitionS[i]);
 14129  
                 }
 14130  
         }
 14131  
 
 14132  
         protected class DFA82 extends DFA {
 14133  
 
 14134  18
                 public DFA82(BaseRecognizer recognizer) {
 14135  18
                         this.recognizer = recognizer;
 14136  18
                         this.decisionNumber = 82;
 14137  18
                         this.eot = DFA82_eot;
 14138  18
                         this.eof = DFA82_eof;
 14139  18
                         this.min = DFA82_min;
 14140  18
                         this.max = DFA82_max;
 14141  18
                         this.accept = DFA82_accept;
 14142  18
                         this.special = DFA82_special;
 14143  18
                         this.transition = DFA82_transition;
 14144  18
                 }
 14145  
                 @Override
 14146  
                 public String getDescription() {
 14147  0
                         return "1096:13: ( explicitConstructorInvocation )?";
 14148  
                 }
 14149  
                 @Override
 14150  
                 public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 14151  9
                         TokenStream input = (TokenStream)_input;
 14152  9
                         int _s = s;
 14153  9
                         switch ( s ) {
 14154  
                                         case 0 : 
 14155  0
                                                 int LA82_47 = input.LA(1);
 14156  
                                                  
 14157  0
                                                 int index82_47 = input.index();
 14158  0
                                                 input.rewind();
 14159  0
                                                 s = -1;
 14160  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14161  0
                                                 else if ( (true) ) {s = 15;}
 14162  
                                                  
 14163  0
                                                 input.seek(index82_47);
 14164  0
                                                 if ( s>=0 ) return s;
 14165  
                                                 break;
 14166  
 
 14167  
                                         case 1 : 
 14168  9
                                                 int LA82_48 = input.LA(1);
 14169  
                                                  
 14170  9
                                                 int index82_48 = input.index();
 14171  9
                                                 input.rewind();
 14172  9
                                                 s = -1;
 14173  9
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14174  9
                                                 else if ( (true) ) {s = 15;}
 14175  
                                                  
 14176  9
                                                 input.seek(index82_48);
 14177  9
                                                 if ( s>=0 ) return s;
 14178  
                                                 break;
 14179  
 
 14180  
                                         case 2 : 
 14181  0
                                                 int LA82_49 = input.LA(1);
 14182  
                                                  
 14183  0
                                                 int index82_49 = input.index();
 14184  0
                                                 input.rewind();
 14185  0
                                                 s = -1;
 14186  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14187  0
                                                 else if ( (true) ) {s = 15;}
 14188  
                                                  
 14189  0
                                                 input.seek(index82_49);
 14190  0
                                                 if ( s>=0 ) return s;
 14191  
                                                 break;
 14192  
 
 14193  
                                         case 3 : 
 14194  0
                                                 int LA82_73 = input.LA(1);
 14195  
                                                  
 14196  0
                                                 int index82_73 = input.index();
 14197  0
                                                 input.rewind();
 14198  0
                                                 s = -1;
 14199  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14200  0
                                                 else if ( (true) ) {s = 15;}
 14201  
                                                  
 14202  0
                                                 input.seek(index82_73);
 14203  0
                                                 if ( s>=0 ) return s;
 14204  
                                                 break;
 14205  
 
 14206  
                                         case 4 : 
 14207  0
                                                 int LA82_74 = input.LA(1);
 14208  
                                                  
 14209  0
                                                 int index82_74 = input.index();
 14210  0
                                                 input.rewind();
 14211  0
                                                 s = -1;
 14212  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14213  0
                                                 else if ( (true) ) {s = 15;}
 14214  
                                                  
 14215  0
                                                 input.seek(index82_74);
 14216  0
                                                 if ( s>=0 ) return s;
 14217  
                                                 break;
 14218  
 
 14219  
                                         case 5 : 
 14220  0
                                                 int LA82_75 = input.LA(1);
 14221  
                                                  
 14222  0
                                                 int index82_75 = input.index();
 14223  0
                                                 input.rewind();
 14224  0
                                                 s = -1;
 14225  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14226  0
                                                 else if ( (true) ) {s = 15;}
 14227  
                                                  
 14228  0
                                                 input.seek(index82_75);
 14229  0
                                                 if ( s>=0 ) return s;
 14230  
                                                 break;
 14231  
 
 14232  
                                         case 6 : 
 14233  0
                                                 int LA82_76 = input.LA(1);
 14234  
                                                  
 14235  0
                                                 int index82_76 = input.index();
 14236  0
                                                 input.rewind();
 14237  0
                                                 s = -1;
 14238  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14239  0
                                                 else if ( (true) ) {s = 15;}
 14240  
                                                  
 14241  0
                                                 input.seek(index82_76);
 14242  0
                                                 if ( s>=0 ) return s;
 14243  
                                                 break;
 14244  
 
 14245  
                                         case 7 : 
 14246  0
                                                 int LA82_77 = input.LA(1);
 14247  
                                                  
 14248  0
                                                 int index82_77 = input.index();
 14249  0
                                                 input.rewind();
 14250  0
                                                 s = -1;
 14251  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14252  0
                                                 else if ( (true) ) {s = 15;}
 14253  
                                                  
 14254  0
                                                 input.seek(index82_77);
 14255  0
                                                 if ( s>=0 ) return s;
 14256  
                                                 break;
 14257  
 
 14258  
                                         case 8 : 
 14259  0
                                                 int LA82_78 = input.LA(1);
 14260  
                                                  
 14261  0
                                                 int index82_78 = input.index();
 14262  0
                                                 input.rewind();
 14263  0
                                                 s = -1;
 14264  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14265  0
                                                 else if ( (true) ) {s = 15;}
 14266  
                                                  
 14267  0
                                                 input.seek(index82_78);
 14268  0
                                                 if ( s>=0 ) return s;
 14269  
                                                 break;
 14270  
 
 14271  
                                         case 9 : 
 14272  0
                                                 int LA82_79 = input.LA(1);
 14273  
                                                  
 14274  0
                                                 int index82_79 = input.index();
 14275  0
                                                 input.rewind();
 14276  0
                                                 s = -1;
 14277  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14278  0
                                                 else if ( (true) ) {s = 15;}
 14279  
                                                  
 14280  0
                                                 input.seek(index82_79);
 14281  0
                                                 if ( s>=0 ) return s;
 14282  
                                                 break;
 14283  
 
 14284  
                                         case 10 : 
 14285  0
                                                 int LA82_80 = input.LA(1);
 14286  
                                                  
 14287  0
                                                 int index82_80 = input.index();
 14288  0
                                                 input.rewind();
 14289  0
                                                 s = -1;
 14290  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14291  0
                                                 else if ( (true) ) {s = 15;}
 14292  
                                                  
 14293  0
                                                 input.seek(index82_80);
 14294  0
                                                 if ( s>=0 ) return s;
 14295  
                                                 break;
 14296  
 
 14297  
                                         case 11 : 
 14298  0
                                                 int LA82_81 = input.LA(1);
 14299  
                                                  
 14300  0
                                                 int index82_81 = input.index();
 14301  0
                                                 input.rewind();
 14302  0
                                                 s = -1;
 14303  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14304  0
                                                 else if ( (true) ) {s = 15;}
 14305  
                                                  
 14306  0
                                                 input.seek(index82_81);
 14307  0
                                                 if ( s>=0 ) return s;
 14308  
                                                 break;
 14309  
 
 14310  
                                         case 12 : 
 14311  0
                                                 int LA82_82 = input.LA(1);
 14312  
                                                  
 14313  0
                                                 int index82_82 = input.index();
 14314  0
                                                 input.rewind();
 14315  0
                                                 s = -1;
 14316  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14317  0
                                                 else if ( (true) ) {s = 15;}
 14318  
                                                  
 14319  0
                                                 input.seek(index82_82);
 14320  0
                                                 if ( s>=0 ) return s;
 14321  
                                                 break;
 14322  
 
 14323  
                                         case 13 : 
 14324  0
                                                 int LA82_83 = input.LA(1);
 14325  
                                                  
 14326  0
                                                 int index82_83 = input.index();
 14327  0
                                                 input.rewind();
 14328  0
                                                 s = -1;
 14329  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14330  0
                                                 else if ( (true) ) {s = 15;}
 14331  
                                                  
 14332  0
                                                 input.seek(index82_83);
 14333  0
                                                 if ( s>=0 ) return s;
 14334  
                                                 break;
 14335  
 
 14336  
                                         case 14 : 
 14337  0
                                                 int LA82_84 = input.LA(1);
 14338  
                                                  
 14339  0
                                                 int index82_84 = input.index();
 14340  0
                                                 input.rewind();
 14341  0
                                                 s = -1;
 14342  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14343  0
                                                 else if ( (true) ) {s = 15;}
 14344  
                                                  
 14345  0
                                                 input.seek(index82_84);
 14346  0
                                                 if ( s>=0 ) return s;
 14347  
                                                 break;
 14348  
 
 14349  
                                         case 15 : 
 14350  0
                                                 int LA82_85 = input.LA(1);
 14351  
                                                  
 14352  0
                                                 int index82_85 = input.index();
 14353  0
                                                 input.rewind();
 14354  0
                                                 s = -1;
 14355  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14356  0
                                                 else if ( (true) ) {s = 15;}
 14357  
                                                  
 14358  0
                                                 input.seek(index82_85);
 14359  0
                                                 if ( s>=0 ) return s;
 14360  
                                                 break;
 14361  
 
 14362  
                                         case 16 : 
 14363  0
                                                 int LA82_86 = input.LA(1);
 14364  
                                                  
 14365  0
                                                 int index82_86 = input.index();
 14366  0
                                                 input.rewind();
 14367  0
                                                 s = -1;
 14368  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14369  0
                                                 else if ( (true) ) {s = 15;}
 14370  
                                                  
 14371  0
                                                 input.seek(index82_86);
 14372  0
                                                 if ( s>=0 ) return s;
 14373  
                                                 break;
 14374  
 
 14375  
                                         case 17 : 
 14376  0
                                                 int LA82_87 = input.LA(1);
 14377  
                                                  
 14378  0
                                                 int index82_87 = input.index();
 14379  0
                                                 input.rewind();
 14380  0
                                                 s = -1;
 14381  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14382  0
                                                 else if ( (true) ) {s = 15;}
 14383  
                                                  
 14384  0
                                                 input.seek(index82_87);
 14385  0
                                                 if ( s>=0 ) return s;
 14386  
                                                 break;
 14387  
 
 14388  
                                         case 18 : 
 14389  0
                                                 int LA82_88 = input.LA(1);
 14390  
                                                  
 14391  0
                                                 int index82_88 = input.index();
 14392  0
                                                 input.rewind();
 14393  0
                                                 s = -1;
 14394  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14395  0
                                                 else if ( (true) ) {s = 15;}
 14396  
                                                  
 14397  0
                                                 input.seek(index82_88);
 14398  0
                                                 if ( s>=0 ) return s;
 14399  
                                                 break;
 14400  
 
 14401  
                                         case 19 : 
 14402  0
                                                 int LA82_89 = input.LA(1);
 14403  
                                                  
 14404  0
                                                 int index82_89 = input.index();
 14405  0
                                                 input.rewind();
 14406  0
                                                 s = -1;
 14407  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14408  0
                                                 else if ( (true) ) {s = 15;}
 14409  
                                                  
 14410  0
                                                 input.seek(index82_89);
 14411  0
                                                 if ( s>=0 ) return s;
 14412  
                                                 break;
 14413  
 
 14414  
                                         case 20 : 
 14415  0
                                                 int LA82_90 = input.LA(1);
 14416  
                                                  
 14417  0
                                                 int index82_90 = input.index();
 14418  0
                                                 input.rewind();
 14419  0
                                                 s = -1;
 14420  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14421  0
                                                 else if ( (true) ) {s = 15;}
 14422  
                                                  
 14423  0
                                                 input.seek(index82_90);
 14424  0
                                                 if ( s>=0 ) return s;
 14425  
                                                 break;
 14426  
 
 14427  
                                         case 21 : 
 14428  0
                                                 int LA82_91 = input.LA(1);
 14429  
                                                  
 14430  0
                                                 int index82_91 = input.index();
 14431  0
                                                 input.rewind();
 14432  0
                                                 s = -1;
 14433  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14434  0
                                                 else if ( (true) ) {s = 15;}
 14435  
                                                  
 14436  0
                                                 input.seek(index82_91);
 14437  0
                                                 if ( s>=0 ) return s;
 14438  
                                                 break;
 14439  
 
 14440  
                                         case 22 : 
 14441  0
                                                 int LA82_92 = input.LA(1);
 14442  
                                                  
 14443  0
                                                 int index82_92 = input.index();
 14444  0
                                                 input.rewind();
 14445  0
                                                 s = -1;
 14446  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14447  0
                                                 else if ( (true) ) {s = 15;}
 14448  
                                                  
 14449  0
                                                 input.seek(index82_92);
 14450  0
                                                 if ( s>=0 ) return s;
 14451  
                                                 break;
 14452  
 
 14453  
                                         case 23 : 
 14454  0
                                                 int LA82_93 = input.LA(1);
 14455  
                                                  
 14456  0
                                                 int index82_93 = input.index();
 14457  0
                                                 input.rewind();
 14458  0
                                                 s = -1;
 14459  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14460  0
                                                 else if ( (true) ) {s = 15;}
 14461  
                                                  
 14462  0
                                                 input.seek(index82_93);
 14463  0
                                                 if ( s>=0 ) return s;
 14464  
                                                 break;
 14465  
 
 14466  
                                         case 24 : 
 14467  0
                                                 int LA82_94 = input.LA(1);
 14468  
                                                  
 14469  0
                                                 int index82_94 = input.index();
 14470  0
                                                 input.rewind();
 14471  0
                                                 s = -1;
 14472  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14473  0
                                                 else if ( (true) ) {s = 15;}
 14474  
                                                  
 14475  0
                                                 input.seek(index82_94);
 14476  0
                                                 if ( s>=0 ) return s;
 14477  
                                                 break;
 14478  
 
 14479  
                                         case 25 : 
 14480  0
                                                 int LA82_119 = input.LA(1);
 14481  
                                                  
 14482  0
                                                 int index82_119 = input.index();
 14483  0
                                                 input.rewind();
 14484  0
                                                 s = -1;
 14485  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14486  0
                                                 else if ( (true) ) {s = 15;}
 14487  
                                                  
 14488  0
                                                 input.seek(index82_119);
 14489  0
                                                 if ( s>=0 ) return s;
 14490  
                                                 break;
 14491  
 
 14492  
                                         case 26 : 
 14493  0
                                                 int LA82_144 = input.LA(1);
 14494  
                                                  
 14495  0
                                                 int index82_144 = input.index();
 14496  0
                                                 input.rewind();
 14497  0
                                                 s = -1;
 14498  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14499  0
                                                 else if ( (true) ) {s = 15;}
 14500  
                                                  
 14501  0
                                                 input.seek(index82_144);
 14502  0
                                                 if ( s>=0 ) return s;
 14503  
                                                 break;
 14504  
 
 14505  
                                         case 27 : 
 14506  0
                                                 int LA82_169 = input.LA(1);
 14507  
                                                  
 14508  0
                                                 int index82_169 = input.index();
 14509  0
                                                 input.rewind();
 14510  0
                                                 s = -1;
 14511  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14512  0
                                                 else if ( (true) ) {s = 15;}
 14513  
                                                  
 14514  0
                                                 input.seek(index82_169);
 14515  0
                                                 if ( s>=0 ) return s;
 14516  
                                                 break;
 14517  
 
 14518  
                                         case 28 : 
 14519  0
                                                 int LA82_194 = input.LA(1);
 14520  
                                                  
 14521  0
                                                 int index82_194 = input.index();
 14522  0
                                                 input.rewind();
 14523  0
                                                 s = -1;
 14524  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14525  0
                                                 else if ( (true) ) {s = 15;}
 14526  
                                                  
 14527  0
                                                 input.seek(index82_194);
 14528  0
                                                 if ( s>=0 ) return s;
 14529  
                                                 break;
 14530  
 
 14531  
                                         case 29 : 
 14532  0
                                                 int LA82_219 = input.LA(1);
 14533  
                                                  
 14534  0
                                                 int index82_219 = input.index();
 14535  0
                                                 input.rewind();
 14536  0
                                                 s = -1;
 14537  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14538  0
                                                 else if ( (true) ) {s = 15;}
 14539  
                                                  
 14540  0
                                                 input.seek(index82_219);
 14541  0
                                                 if ( s>=0 ) return s;
 14542  
                                                 break;
 14543  
 
 14544  
                                         case 30 : 
 14545  0
                                                 int LA82_244 = input.LA(1);
 14546  
                                                  
 14547  0
                                                 int index82_244 = input.index();
 14548  0
                                                 input.rewind();
 14549  0
                                                 s = -1;
 14550  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14551  0
                                                 else if ( (true) ) {s = 15;}
 14552  
                                                  
 14553  0
                                                 input.seek(index82_244);
 14554  0
                                                 if ( s>=0 ) return s;
 14555  
                                                 break;
 14556  
 
 14557  
                                         case 31 : 
 14558  0
                                                 int LA82_245 = input.LA(1);
 14559  
                                                  
 14560  0
                                                 int index82_245 = input.index();
 14561  0
                                                 input.rewind();
 14562  0
                                                 s = -1;
 14563  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14564  0
                                                 else if ( (true) ) {s = 15;}
 14565  
                                                  
 14566  0
                                                 input.seek(index82_245);
 14567  0
                                                 if ( s>=0 ) return s;
 14568  
                                                 break;
 14569  
 
 14570  
                                         case 32 : 
 14571  0
                                                 int LA82_246 = input.LA(1);
 14572  
                                                  
 14573  0
                                                 int index82_246 = input.index();
 14574  0
                                                 input.rewind();
 14575  0
                                                 s = -1;
 14576  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14577  0
                                                 else if ( (true) ) {s = 15;}
 14578  
                                                  
 14579  0
                                                 input.seek(index82_246);
 14580  0
                                                 if ( s>=0 ) return s;
 14581  
                                                 break;
 14582  
 
 14583  
                                         case 33 : 
 14584  0
                                                 int LA82_248 = input.LA(1);
 14585  
                                                  
 14586  0
                                                 int index82_248 = input.index();
 14587  0
                                                 input.rewind();
 14588  0
                                                 s = -1;
 14589  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14590  0
                                                 else if ( (true) ) {s = 15;}
 14591  
                                                  
 14592  0
                                                 input.seek(index82_248);
 14593  0
                                                 if ( s>=0 ) return s;
 14594  
                                                 break;
 14595  
 
 14596  
                                         case 34 : 
 14597  0
                                                 int LA82_249 = input.LA(1);
 14598  
                                                  
 14599  0
                                                 int index82_249 = input.index();
 14600  0
                                                 input.rewind();
 14601  0
                                                 s = -1;
 14602  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14603  0
                                                 else if ( (true) ) {s = 15;}
 14604  
                                                  
 14605  0
                                                 input.seek(index82_249);
 14606  0
                                                 if ( s>=0 ) return s;
 14607  
                                                 break;
 14608  
 
 14609  
                                         case 35 : 
 14610  0
                                                 int LA82_250 = input.LA(1);
 14611  
                                                  
 14612  0
                                                 int index82_250 = input.index();
 14613  0
                                                 input.rewind();
 14614  0
                                                 s = -1;
 14615  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14616  0
                                                 else if ( (true) ) {s = 15;}
 14617  
                                                  
 14618  0
                                                 input.seek(index82_250);
 14619  0
                                                 if ( s>=0 ) return s;
 14620  
                                                 break;
 14621  
 
 14622  
                                         case 36 : 
 14623  0
                                                 int LA82_275 = input.LA(1);
 14624  
                                                  
 14625  0
                                                 int index82_275 = input.index();
 14626  0
                                                 input.rewind();
 14627  0
                                                 s = -1;
 14628  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14629  0
                                                 else if ( (true) ) {s = 15;}
 14630  
                                                  
 14631  0
                                                 input.seek(index82_275);
 14632  0
                                                 if ( s>=0 ) return s;
 14633  
                                                 break;
 14634  
 
 14635  
                                         case 37 : 
 14636  0
                                                 int LA82_276 = input.LA(1);
 14637  
                                                  
 14638  0
                                                 int index82_276 = input.index();
 14639  0
                                                 input.rewind();
 14640  0
                                                 s = -1;
 14641  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14642  0
                                                 else if ( (true) ) {s = 15;}
 14643  
                                                  
 14644  0
                                                 input.seek(index82_276);
 14645  0
                                                 if ( s>=0 ) return s;
 14646  
                                                 break;
 14647  
 
 14648  
                                         case 38 : 
 14649  0
                                                 int LA82_278 = input.LA(1);
 14650  
                                                  
 14651  0
                                                 int index82_278 = input.index();
 14652  0
                                                 input.rewind();
 14653  0
                                                 s = -1;
 14654  0
                                                 if ( (synpred114_Java()) ) {s = 1;}
 14655  0
                                                 else if ( (true) ) {s = 15;}
 14656  
                                                  
 14657  0
                                                 input.seek(index82_278);
 14658  0
                                                 if ( s>=0 ) return s;
 14659  
                                                 break;
 14660  
                         }
 14661  0
                         if (state.backtracking>0) {state.failed=true; return -1;}
 14662  0
                         NoViableAltException nvae =
 14663  0
                                 new NoViableAltException(getDescription(), 82, _s, input);
 14664  0
                         error(nvae);
 14665  0
                         throw nvae;
 14666  
                 }
 14667  
         }
 14668  
 
 14669  
         static final String DFA107_eotS =
 14670  
                 "\133\uffff";
 14671  
         static final String DFA107_eofS =
 14672  
                 "\133\uffff";
 14673  
         static final String DFA107_minS =
 14674  
                 "\1\4\1\11\3\20\52\uffff\2\0\12\uffff\1\0\1\uffff\3\0\30\uffff\1\0\2\uffff";
 14675  
         static final String DFA107_maxS =
 14676  
                 "\1\163\1\141\1\125\1\161\1\71\52\uffff\2\0\12\uffff\1\0\1\uffff\3\0\30"+
 14677  
                 "\uffff\1\0\2\uffff";
 14678  
         static final String DFA107_acceptS =
 14679  
                 "\5\uffff\1\2\10\uffff\1\3\36\uffff\1\1\55\uffff";
 14680  
         static final String DFA107_specialS =
 14681  
                 "\57\uffff\1\0\1\1\12\uffff\1\2\1\uffff\1\3\1\4\1\5\30\uffff\1\6\2\uffff}>";
 14682  1
         static final String[] DFA107_transitionS = {
 14683  
                         "\1\16\1\uffff\2\16\1\uffff\1\5\3\uffff\1\16\1\uffff\1\16\1\3\6\uffff"+
 14684  
                         "\2\16\2\uffff\1\16\6\uffff\1\16\3\uffff\2\16\2\uffff\2\16\6\uffff\1\16"+
 14685  
                         "\5\uffff\1\2\4\uffff\1\5\1\4\1\16\1\4\2\uffff\1\4\1\5\1\16\1\uffff\1"+
 14686  
                         "\16\1\4\2\uffff\1\16\1\1\1\uffff\1\4\2\16\3\uffff\1\4\1\5\1\4\1\uffff"+
 14687  
                         "\2\16\1\uffff\3\5\1\16\1\4\2\5\5\16\2\uffff\3\16\1\uffff\2\16\4\uffff"+
 14688  
                         "\1\16",
 14689  
                         "\1\5\6\uffff\1\55\47\uffff\1\60\4\uffff\1\5\1\55\1\uffff\1\55\2\uffff"+
 14690  
                         "\1\55\1\5\3\uffff\1\55\3\uffff\1\57\1\uffff\1\55\5\uffff\1\55\1\5\1\55"+
 14691  
                         "\4\uffff\3\5\1\uffff\1\55\2\5",
 14692  
                         "\1\73\104\uffff\1\5",
 14693  
                         "\1\55\13\uffff\7\16\1\uffff\5\16\1\uffff\3\16\1\76\1\uffff\4\16\1\75"+
 14694  
                         "\4\16\1\uffff\1\77\1\uffff\2\16\26\uffff\1\16\33\uffff\3\16",
 14695  
                         "\1\55\34\uffff\1\16\13\uffff\1\130",
 14696  
                         "",
 14697  
                         "",
 14698  
                         "",
 14699  
                         "",
 14700  
                         "",
 14701  
                         "",
 14702  
                         "",
 14703  
                         "",
 14704  
                         "",
 14705  
                         "",
 14706  
                         "",
 14707  
                         "",
 14708  
                         "",
 14709  
                         "",
 14710  
                         "",
 14711  
                         "",
 14712  
                         "",
 14713  
                         "",
 14714  
                         "",
 14715  
                         "",
 14716  
                         "",
 14717  
                         "",
 14718  
                         "",
 14719  
                         "",
 14720  
                         "",
 14721  
                         "",
 14722  
                         "",
 14723  
                         "",
 14724  
                         "",
 14725  
                         "",
 14726  
                         "",
 14727  
                         "",
 14728  
                         "",
 14729  
                         "",
 14730  
                         "",
 14731  
                         "",
 14732  
                         "",
 14733  
                         "",
 14734  
                         "",
 14735  
                         "",
 14736  
                         "",
 14737  
                         "",
 14738  
                         "\1\uffff",
 14739  
                         "\1\uffff",
 14740  
                         "",
 14741  
                         "",
 14742  
                         "",
 14743  
                         "",
 14744  
                         "",
 14745  
                         "",
 14746  
                         "",
 14747  
                         "",
 14748  
                         "",
 14749  
                         "",
 14750  
                         "\1\uffff",
 14751  
                         "",
 14752  
                         "\1\uffff",
 14753  
                         "\1\uffff",
 14754  
                         "\1\uffff",
 14755  
                         "",
 14756  
                         "",
 14757  
                         "",
 14758  
                         "",
 14759  
                         "",
 14760  
                         "",
 14761  
                         "",
 14762  
                         "",
 14763  
                         "",
 14764  
                         "",
 14765  
                         "",
 14766  
                         "",
 14767  
                         "",
 14768  
                         "",
 14769  
                         "",
 14770  
                         "",
 14771  
                         "",
 14772  
                         "",
 14773  
                         "",
 14774  
                         "",
 14775  
                         "",
 14776  
                         "",
 14777  
                         "",
 14778  
                         "",
 14779  
                         "\1\uffff",
 14780  
                         "",
 14781  
                         ""
 14782  
         };
 14783  
 
 14784  1
         static final short[] DFA107_eot = DFA.unpackEncodedString(DFA107_eotS);
 14785  1
         static final short[] DFA107_eof = DFA.unpackEncodedString(DFA107_eofS);
 14786  1
         static final char[] DFA107_min = DFA.unpackEncodedStringToUnsignedChars(DFA107_minS);
 14787  1
         static final char[] DFA107_max = DFA.unpackEncodedStringToUnsignedChars(DFA107_maxS);
 14788  1
         static final short[] DFA107_accept = DFA.unpackEncodedString(DFA107_acceptS);
 14789  1
         static final short[] DFA107_special = DFA.unpackEncodedString(DFA107_specialS);
 14790  
         static final short[][] DFA107_transition;
 14791  
 
 14792  
         static {
 14793  1
                 int numStates = DFA107_transitionS.length;
 14794  1
                 DFA107_transition = new short[numStates][];
 14795  92
                 for (int i=0; i<numStates; i++) {
 14796  91
                         DFA107_transition[i] = DFA.unpackEncodedString(DFA107_transitionS[i]);
 14797  
                 }
 14798  
         }
 14799  
 
 14800  
         protected class DFA107 extends DFA {
 14801  
 
 14802  18
                 public DFA107(BaseRecognizer recognizer) {
 14803  18
                         this.recognizer = recognizer;
 14804  18
                         this.decisionNumber = 107;
 14805  18
                         this.eot = DFA107_eot;
 14806  18
                         this.eof = DFA107_eof;
 14807  18
                         this.min = DFA107_min;
 14808  18
                         this.max = DFA107_max;
 14809  18
                         this.accept = DFA107_accept;
 14810  18
                         this.special = DFA107_special;
 14811  18
                         this.transition = DFA107_transition;
 14812  18
                 }
 14813  
                 @Override
 14814  
                 public String getDescription() {
 14815  0
                         return "1247:1: blockStatement : ( localVariableDeclarationStatement | classOrInterfaceDeclaration | statement );";
 14816  
                 }
 14817  
                 @Override
 14818  
                 public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 14819  0
                         TokenStream input = (TokenStream)_input;
 14820  0
                         int _s = s;
 14821  0
                         switch ( s ) {
 14822  
                                         case 0 : 
 14823  0
                                                 int LA107_47 = input.LA(1);
 14824  
                                                  
 14825  0
                                                 int index107_47 = input.index();
 14826  0
                                                 input.rewind();
 14827  0
                                                 s = -1;
 14828  0
                                                 if ( (synpred152_Java()) ) {s = 45;}
 14829  0
                                                 else if ( (synpred153_Java()) ) {s = 5;}
 14830  
                                                  
 14831  0
                                                 input.seek(index107_47);
 14832  0
                                                 if ( s>=0 ) return s;
 14833  
                                                 break;
 14834  
 
 14835  
                                         case 1 : 
 14836  0
                                                 int LA107_48 = input.LA(1);
 14837  
                                                  
 14838  0
                                                 int index107_48 = input.index();
 14839  0
                                                 input.rewind();
 14840  0
                                                 s = -1;
 14841  0
                                                 if ( (synpred152_Java()) ) {s = 45;}
 14842  0
                                                 else if ( (synpred153_Java()) ) {s = 5;}
 14843  
                                                  
 14844  0
                                                 input.seek(index107_48);
 14845  0
                                                 if ( s>=0 ) return s;
 14846  
                                                 break;
 14847  
 
 14848  
                                         case 2 : 
 14849  0
                                                 int LA107_59 = input.LA(1);
 14850  
                                                  
 14851  0
                                                 int index107_59 = input.index();
 14852  0
                                                 input.rewind();
 14853  0
                                                 s = -1;
 14854  0
                                                 if ( (synpred152_Java()) ) {s = 45;}
 14855  0
                                                 else if ( (synpred153_Java()) ) {s = 5;}
 14856  
                                                  
 14857  0
                                                 input.seek(index107_59);
 14858  0
                                                 if ( s>=0 ) return s;
 14859  
                                                 break;
 14860  
 
 14861  
                                         case 3 : 
 14862  0
                                                 int LA107_61 = input.LA(1);
 14863  
                                                  
 14864  0
                                                 int index107_61 = input.index();
 14865  0
                                                 input.rewind();
 14866  0
                                                 s = -1;
 14867  0
                                                 if ( (synpred152_Java()) ) {s = 45;}
 14868  0
                                                 else if ( (true) ) {s = 14;}
 14869  
                                                  
 14870  0
                                                 input.seek(index107_61);
 14871  0
                                                 if ( s>=0 ) return s;
 14872  
                                                 break;
 14873  
 
 14874  
                                         case 4 : 
 14875  0
                                                 int LA107_62 = input.LA(1);
 14876  
                                                  
 14877  0
                                                 int index107_62 = input.index();
 14878  0
                                                 input.rewind();
 14879  0
                                                 s = -1;
 14880  0
                                                 if ( (synpred152_Java()) ) {s = 45;}
 14881  0
                                                 else if ( (true) ) {s = 14;}
 14882  
                                                  
 14883  0
                                                 input.seek(index107_62);
 14884  0
                                                 if ( s>=0 ) return s;
 14885  
                                                 break;
 14886  
 
 14887  
                                         case 5 : 
 14888  0
                                                 int LA107_63 = input.LA(1);
 14889  
                                                  
 14890  0
                                                 int index107_63 = input.index();
 14891  0
                                                 input.rewind();
 14892  0
                                                 s = -1;
 14893  0
                                                 if ( (synpred152_Java()) ) {s = 45;}
 14894  0
                                                 else if ( (true) ) {s = 14;}
 14895  
                                                  
 14896  0
                                                 input.seek(index107_63);
 14897  0
                                                 if ( s>=0 ) return s;
 14898  
                                                 break;
 14899  
 
 14900  
                                         case 6 : 
 14901  0
                                                 int LA107_88 = input.LA(1);
 14902  
                                                  
 14903  0
                                                 int index107_88 = input.index();
 14904  0
                                                 input.rewind();
 14905  0
                                                 s = -1;
 14906  0
                                                 if ( (synpred152_Java()) ) {s = 45;}
 14907  0
                                                 else if ( (true) ) {s = 14;}
 14908  
                                                  
 14909  0
                                                 input.seek(index107_88);
 14910  0
                                                 if ( s>=0 ) return s;
 14911  
                                                 break;
 14912  
                         }
 14913  0
                         if (state.backtracking>0) {state.failed=true; return -1;}
 14914  0
                         NoViableAltException nvae =
 14915  0
                                 new NoViableAltException(getDescription(), 107, _s, input);
 14916  0
                         error(nvae);
 14917  0
                         throw nvae;
 14918  
                 }
 14919  
         }
 14920  
 
 14921  
         static final String DFA115_eotS =
 14922  
                 "\75\uffff";
 14923  
         static final String DFA115_eofS =
 14924  
                 "\75\uffff";
 14925  
         static final String DFA115_minS =
 14926  
                 "\1\4\36\uffff\1\34\35\uffff";
 14927  
         static final String DFA115_maxS =
 14928  
                 "\1\163\36\uffff\1\161\35\uffff";
 14929  
         static final String DFA115_acceptS =
 14930  
                 "\1\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16"+
 14931  
                 "\1\17\22\uffff\1\20\32\uffff";
 14932  
         static final String DFA115_specialS =
 14933  
                 "\75\uffff}>";
 14934  1
         static final String[] DFA115_transitionS = {
 14935  
                         "\1\2\1\uffff\2\17\5\uffff\1\17\1\uffff\1\17\1\37\6\uffff\2\17\2\uffff"+
 14936  
                         "\1\17\6\uffff\1\17\3\uffff\2\17\2\uffff\2\17\6\uffff\1\16\13\uffff\1"+
 14937  
                         "\17\1\14\1\17\2\uffff\1\17\1\uffff\1\15\1\uffff\1\6\1\17\2\uffff\1\17"+
 14938  
                         "\2\uffff\1\17\1\4\1\3\3\uffff\1\17\1\uffff\1\17\1\uffff\2\17\4\uffff"+
 14939  
                         "\1\12\1\17\2\uffff\1\17\1\10\1\11\1\17\1\13\2\uffff\1\17\1\7\1\17\1\uffff"+
 14940  
                         "\1\5\1\1\4\uffff\1\17",
 14941  
                         "",
 14942  
                         "",
 14943  
                         "",
 14944  
                         "",
 14945  
                         "",
 14946  
                         "",
 14947  
                         "",
 14948  
                         "",
 14949  
                         "",
 14950  
                         "",
 14951  
                         "",
 14952  
                         "",
 14953  
                         "",
 14954  
                         "",
 14955  
                         "",
 14956  
                         "",
 14957  
                         "",
 14958  
                         "",
 14959  
                         "",
 14960  
                         "",
 14961  
                         "",
 14962  
                         "",
 14963  
                         "",
 14964  
                         "",
 14965  
                         "",
 14966  
                         "",
 14967  
                         "",
 14968  
                         "",
 14969  
                         "",
 14970  
                         "",
 14971  
                         "\7\17\1\uffff\5\17\1\uffff\4\17\1\uffff\2\17\1\42\6\17\1\uffff\1\17"+
 14972  
                         "\1\uffff\2\17\26\uffff\1\17\33\uffff\3\17",
 14973  
                         "",
 14974  
                         "",
 14975  
                         "",
 14976  
                         "",
 14977  
                         "",
 14978  
                         "",
 14979  
                         "",
 14980  
                         "",
 14981  
                         "",
 14982  
                         "",
 14983  
                         "",
 14984  
                         "",
 14985  
                         "",
 14986  
                         "",
 14987  
                         "",
 14988  
                         "",
 14989  
                         "",
 14990  
                         "",
 14991  
                         "",
 14992  
                         "",
 14993  
                         "",
 14994  
                         "",
 14995  
                         "",
 14996  
                         "",
 14997  
                         "",
 14998  
                         "",
 14999  
                         "",
 15000  
                         "",
 15001  
                         ""
 15002  
         };
 15003  
 
 15004  1
         static final short[] DFA115_eot = DFA.unpackEncodedString(DFA115_eotS);
 15005  1
         static final short[] DFA115_eof = DFA.unpackEncodedString(DFA115_eofS);
 15006  1
         static final char[] DFA115_min = DFA.unpackEncodedStringToUnsignedChars(DFA115_minS);
 15007  1
         static final char[] DFA115_max = DFA.unpackEncodedStringToUnsignedChars(DFA115_maxS);
 15008  1
         static final short[] DFA115_accept = DFA.unpackEncodedString(DFA115_acceptS);
 15009  1
         static final short[] DFA115_special = DFA.unpackEncodedString(DFA115_specialS);
 15010  
         static final short[][] DFA115_transition;
 15011  
 
 15012  
         static {
 15013  1
                 int numStates = DFA115_transitionS.length;
 15014  1
                 DFA115_transition = new short[numStates][];
 15015  62
                 for (int i=0; i<numStates; i++) {
 15016  61
                         DFA115_transition[i] = DFA.unpackEncodedString(DFA115_transitionS[i]);
 15017  
                 }
 15018  
         }
 15019  
 
 15020  
         protected class DFA115 extends DFA {
 15021  
 
 15022  18
                 public DFA115(BaseRecognizer recognizer) {
 15023  18
                         this.recognizer = recognizer;
 15024  18
                         this.decisionNumber = 115;
 15025  18
                         this.eot = DFA115_eot;
 15026  18
                         this.eof = DFA115_eof;
 15027  18
                         this.min = DFA115_min;
 15028  18
                         this.max = DFA115_max;
 15029  18
                         this.accept = DFA115_accept;
 15030  18
                         this.special = DFA115_special;
 15031  18
                         this.transition = DFA115_transition;
 15032  18
                 }
 15033  
                 @Override
 15034  
                 public String getDescription() {
 15035  0
                         return "1273:1: statement : ( block | ASSERT expression ( ':' expression )? ';' | 'if' parExpression statement ( options {k=1; } : 'else' statement )? | 'for' '(' forControl ')' statement | 'while' parExpression statement | 'do' statement 'while' parExpression ';' | 'try' block ( catches 'finally' block | catches | 'finally' block ) | 'switch' parExpression '{' switchBlockStatementGroups '}' | 'synchronized' parExpression block | 'return' ( expression )? ';' | 'throw' expression ';' | 'break' ( Identifier )? ';' | 'continue' ( Identifier )? ';' | ';' | statementExpression ';' | Identifier ':' statement );";
 15036  
                 }
 15037  
         }
 15038  
 
 15039  
         static final String DFA118_eotS =
 15040  
                 "\106\uffff";
 15041  
         static final String DFA118_eofS =
 15042  
                 "\1\1\105\uffff";
 15043  
         static final String DFA118_minS =
 15044  
                 "\1\4\55\uffff\2\0\26\uffff";
 15045  
         static final String DFA118_maxS =
 15046  
                 "\1\163\55\uffff\2\0\26\uffff";
 15047  
         static final String DFA118_acceptS =
 15048  
                 "\1\uffff\1\2\102\uffff\1\1\1\uffff";
 15049  
         static final String DFA118_specialS =
 15050  
                 "\56\uffff\1\0\1\1\26\uffff}>";
 15051  1
         static final String[] DFA118_transitionS = {
 15052  
                         "\1\1\1\uffff\2\1\1\uffff\1\1\3\uffff\1\1\1\uffff\2\1\6\uffff\2\1\2\uffff"+
 15053  
                         "\1\1\6\uffff\1\1\3\uffff\2\1\2\uffff\2\1\6\uffff\1\1\5\uffff\1\1\4\uffff"+
 15054  
                         "\4\1\1\56\1\uffff\3\1\1\57\2\1\2\uffff\2\1\1\uffff\3\1\3\uffff\3\1\1"+
 15055  
                         "\uffff\2\1\1\uffff\14\1\2\uffff\3\1\1\uffff\2\1\3\uffff\2\1",
 15056  
                         "",
 15057  
                         "",
 15058  
                         "",
 15059  
                         "",
 15060  
                         "",
 15061  
                         "",
 15062  
                         "",
 15063  
                         "",
 15064  
                         "",
 15065  
                         "",
 15066  
                         "",
 15067  
                         "",
 15068  
                         "",
 15069  
                         "",
 15070  
                         "",
 15071  
                         "",
 15072  
                         "",
 15073  
                         "",
 15074  
                         "",
 15075  
                         "",
 15076  
                         "",
 15077  
                         "",
 15078  
                         "",
 15079  
                         "",
 15080  
                         "",
 15081  
                         "",
 15082  
                         "",
 15083  
                         "",
 15084  
                         "",
 15085  
                         "",
 15086  
                         "",
 15087  
                         "",
 15088  
                         "",
 15089  
                         "",
 15090  
                         "",
 15091  
                         "",
 15092  
                         "",
 15093  
                         "",
 15094  
                         "",
 15095  
                         "",
 15096  
                         "",
 15097  
                         "",
 15098  
                         "",
 15099  
                         "",
 15100  
                         "",
 15101  
                         "\1\uffff",
 15102  
                         "\1\uffff",
 15103  
                         "",
 15104  
                         "",
 15105  
                         "",
 15106  
                         "",
 15107  
                         "",
 15108  
                         "",
 15109  
                         "",
 15110  
                         "",
 15111  
                         "",
 15112  
                         "",
 15113  
                         "",
 15114  
                         "",
 15115  
                         "",
 15116  
                         "",
 15117  
                         "",
 15118  
                         "",
 15119  
                         "",
 15120  
                         "",
 15121  
                         "",
 15122  
                         "",
 15123  
                         "",
 15124  
                         ""
 15125  
         };
 15126  
 
 15127  1
         static final short[] DFA118_eot = DFA.unpackEncodedString(DFA118_eotS);
 15128  1
         static final short[] DFA118_eof = DFA.unpackEncodedString(DFA118_eofS);
 15129  1
         static final char[] DFA118_min = DFA.unpackEncodedStringToUnsignedChars(DFA118_minS);
 15130  1
         static final char[] DFA118_max = DFA.unpackEncodedStringToUnsignedChars(DFA118_maxS);
 15131  1
         static final short[] DFA118_accept = DFA.unpackEncodedString(DFA118_acceptS);
 15132  1
         static final short[] DFA118_special = DFA.unpackEncodedString(DFA118_specialS);
 15133  
         static final short[][] DFA118_transition;
 15134  
 
 15135  
         static {
 15136  1
                 int numStates = DFA118_transitionS.length;
 15137  1
                 DFA118_transition = new short[numStates][];
 15138  71
                 for (int i=0; i<numStates; i++) {
 15139  70
                         DFA118_transition[i] = DFA.unpackEncodedString(DFA118_transitionS[i]);
 15140  
                 }
 15141  
         }
 15142  
 
 15143  
         protected class DFA118 extends DFA {
 15144  
 
 15145  18
                 public DFA118(BaseRecognizer recognizer) {
 15146  18
                         this.recognizer = recognizer;
 15147  18
                         this.decisionNumber = 118;
 15148  18
                         this.eot = DFA118_eot;
 15149  18
                         this.eof = DFA118_eof;
 15150  18
                         this.min = DFA118_min;
 15151  18
                         this.max = DFA118_max;
 15152  18
                         this.accept = DFA118_accept;
 15153  18
                         this.special = DFA118_special;
 15154  18
                         this.transition = DFA118_transition;
 15155  18
                 }
 15156  
                 @Override
 15157  
                 public String getDescription() {
 15158  0
                         return "()+ loopback of 1317:9: ( switchLabel )+";
 15159  
                 }
 15160  
                 @Override
 15161  
                 public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 15162  8
                         TokenStream input = (TokenStream)_input;
 15163  8
                         int _s = s;
 15164  8
                         switch ( s ) {
 15165  
                                         case 0 : 
 15166  6
                                                 int LA118_46 = input.LA(1);
 15167  
                                                  
 15168  6
                                                 int index118_46 = input.index();
 15169  6
                                                 input.rewind();
 15170  6
                                                 s = -1;
 15171  6
                                                 if ( (synpred179_Java()) ) {s = 68;}
 15172  0
                                                 else if ( (true) ) {s = 1;}
 15173  
                                                  
 15174  6
                                                 input.seek(index118_46);
 15175  6
                                                 if ( s>=0 ) return s;
 15176  
                                                 break;
 15177  
 
 15178  
                                         case 1 : 
 15179  2
                                                 int LA118_47 = input.LA(1);
 15180  
                                                  
 15181  2
                                                 int index118_47 = input.index();
 15182  2
                                                 input.rewind();
 15183  2
                                                 s = -1;
 15184  2
                                                 if ( (synpred179_Java()) ) {s = 68;}
 15185  0
                                                 else if ( (true) ) {s = 1;}
 15186  
                                                  
 15187  2
                                                 input.seek(index118_47);
 15188  2
                                                 if ( s>=0 ) return s;
 15189  
                                                 break;
 15190  
                         }
 15191  0
                         if (state.backtracking>0) {state.failed=true; return -1;}
 15192  0
                         NoViableAltException nvae =
 15193  0
                                 new NoViableAltException(getDescription(), 118, _s, input);
 15194  0
                         error(nvae);
 15195  0
                         throw nvae;
 15196  
                 }
 15197  
         }
 15198  
 
 15199  
         static final String DFA124_eotS =
 15200  
                 "\u0087\uffff";
 15201  
         static final String DFA124_eofS =
 15202  
                 "\u0087\uffff";
 15203  
         static final String DFA124_minS =
 15204  
                 "\1\6\4\20\22\uffff\5\20\1\6\1\20\1\6\1\51\30\uffff\1\72\1\51\1\uffff\21"+
 15205  
                 "\0\2\uffff\3\0\21\uffff\1\0\5\uffff\1\0\30\uffff\1\0\5\uffff";
 15206  
         static final String DFA124_maxS =
 15207  
                 "\1\163\1\137\1\20\1\161\1\71\22\uffff\2\71\1\137\1\20\1\137\1\163\1\145"+
 15208  
                 "\1\163\1\71\30\uffff\1\72\1\71\1\uffff\21\0\2\uffff\3\0\21\uffff\1\0\5"+
 15209  
                 "\uffff\1\0\30\uffff\1\0\5\uffff";
 15210  
         static final String DFA124_acceptS =
 15211  
                 "\5\uffff\1\2\166\uffff\1\1\12\uffff";
 15212  
         static final String DFA124_specialS =
 15213  
                 "\73\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+
 15214  
                 "\1\16\1\17\1\20\2\uffff\1\21\1\22\1\23\21\uffff\1\24\5\uffff\1\25\30\uffff"+
 15215  
                 "\1\26\5\uffff}>";
 15216  1
         static final String[] DFA124_transitionS = {
 15217  
                         "\2\5\5\uffff\1\5\1\uffff\1\5\1\3\6\uffff\2\5\2\uffff\1\5\6\uffff\1\5"+
 15218  
                         "\3\uffff\2\5\2\uffff\2\5\6\uffff\1\5\5\uffff\1\2\5\uffff\1\4\1\uffff"+
 15219  
                         "\1\4\2\uffff\1\4\4\uffff\1\4\2\uffff\1\5\1\1\1\uffff\1\4\5\uffff\1\4"+
 15220  
                         "\1\uffff\1\4\1\uffff\2\5\5\uffff\1\4\2\uffff\1\5\2\uffff\1\5\3\uffff"+
 15221  
                         "\1\5\1\uffff\1\5\7\uffff\1\5",
 15222  
                         "\1\27\47\uffff\1\32\5\uffff\1\30\1\uffff\1\30\2\uffff\1\30\4\uffff\1"+
 15223  
                         "\30\3\uffff\1\31\1\uffff\1\30\5\uffff\1\30\1\uffff\1\30\10\uffff\1\30",
 15224  
                         "\1\33",
 15225  
                         "\1\37\13\uffff\7\5\1\uffff\11\5\1\35\1\uffff\2\5\1\uffff\1\5\1\34\4"+
 15226  
                         "\5\1\uffff\1\36\1\uffff\2\5\26\uffff\1\5\33\uffff\3\5",
 15227  
                         "\1\71\34\uffff\1\5\13\uffff\1\70",
 15228  
                         "",
 15229  
                         "",
 15230  
                         "",
 15231  
                         "",
 15232  
                         "",
 15233  
                         "",
 15234  
                         "",
 15235  
                         "",
 15236  
                         "",
 15237  
                         "",
 15238  
                         "",
 15239  
                         "",
 15240  
                         "",
 15241  
                         "",
 15242  
                         "",
 15243  
                         "",
 15244  
                         "",
 15245  
                         "",
 15246  
                         "\1\76\34\uffff\1\74\5\uffff\1\73\5\uffff\1\75",
 15247  
                         "\1\100\50\uffff\1\77",
 15248  
                         "\1\101\47\uffff\1\104\5\uffff\1\102\1\uffff\1\102\2\uffff\1\102\4\uffff"+
 15249  
                         "\1\102\3\uffff\1\103\1\uffff\1\102\5\uffff\1\102\1\uffff\1\102\10\uffff"+
 15250  
                         "\1\102",
 15251  
                         "\1\105",
 15252  
                         "\1\110\21\uffff\1\107\12\uffff\1\106\12\uffff\1\113\5\uffff\1\111\1"+
 15253  
                         "\uffff\1\111\2\uffff\1\111\4\uffff\1\111\3\uffff\1\112\1\uffff\1\111"+
 15254  
                         "\5\uffff\1\111\1\uffff\1\111\10\uffff\1\111",
 15255  
                         "\2\5\5\uffff\1\5\1\uffff\1\5\1\116\6\uffff\2\5\2\uffff\1\5\6\uffff\1"+
 15256  
                         "\5\3\uffff\2\5\2\uffff\2\5\7\uffff\2\5\2\uffff\1\120\6\uffff\1\117\1"+
 15257  
                         "\uffff\1\117\2\uffff\1\117\4\uffff\1\117\2\uffff\1\5\2\uffff\1\117\5"+
 15258  
                         "\uffff\1\117\1\uffff\1\117\1\uffff\2\5\5\uffff\1\117\2\uffff\1\5\2\uffff"+
 15259  
                         "\1\5\3\uffff\1\5\1\uffff\1\5\7\uffff\1\5",
 15260  
                         "\1\142\42\uffff\1\5\20\uffff\1\5\23\uffff\1\5\11\uffff\1\5\2\uffff\1"+
 15261  
                         "\5",
 15262  
                         "\2\5\5\uffff\1\5\1\uffff\2\5\6\uffff\2\5\2\uffff\1\5\6\uffff\1\5\3\uffff"+
 15263  
                         "\2\5\2\uffff\2\5\16\uffff\1\150\3\uffff\1\5\1\uffff\1\5\2\uffff\1\5\4"+
 15264  
                         "\uffff\1\5\2\uffff\1\5\2\uffff\1\5\5\uffff\1\5\1\uffff\1\5\1\uffff\2"+
 15265  
                         "\5\5\uffff\1\5\2\uffff\1\5\2\uffff\1\5\3\uffff\1\5\1\uffff\1\5\7\uffff"+
 15266  
                         "\1\5",
 15267  
                         "\1\5\7\uffff\1\174\1\5\1\uffff\1\5\4\uffff\1\5",
 15268  
                         "",
 15269  
                         "",
 15270  
                         "",
 15271  
                         "",
 15272  
                         "",
 15273  
                         "",
 15274  
                         "",
 15275  
                         "",
 15276  
                         "",
 15277  
                         "",
 15278  
                         "",
 15279  
                         "",
 15280  
                         "",
 15281  
                         "",
 15282  
                         "",
 15283  
                         "",
 15284  
                         "",
 15285  
                         "",
 15286  
                         "",
 15287  
                         "",
 15288  
                         "",
 15289  
                         "",
 15290  
                         "",
 15291  
                         "",
 15292  
                         "\1\u0081",
 15293  
                         "\1\5\7\uffff\1\174\1\5\1\uffff\1\5\4\uffff\1\5",
 15294  
                         "",
 15295  
                         "\1\uffff",
 15296  
                         "\1\uffff",
 15297  
                         "\1\uffff",
 15298  
                         "\1\uffff",
 15299  
                         "\1\uffff",
 15300  
                         "\1\uffff",
 15301  
                         "\1\uffff",
 15302  
                         "\1\uffff",
 15303  
                         "\1\uffff",
 15304  
                         "\1\uffff",
 15305  
                         "\1\uffff",
 15306  
                         "\1\uffff",
 15307  
                         "\1\uffff",
 15308  
                         "\1\uffff",
 15309  
                         "\1\uffff",
 15310  
                         "\1\uffff",
 15311  
                         "\1\uffff",
 15312  
                         "",
 15313  
                         "",
 15314  
                         "\1\uffff",
 15315  
                         "\1\uffff",
 15316  
                         "\1\uffff",
 15317  
                         "",
 15318  
                         "",
 15319  
                         "",
 15320  
                         "",
 15321  
                         "",
 15322  
                         "",
 15323  
                         "",
 15324  
                         "",
 15325  
                         "",
 15326  
                         "",
 15327  
                         "",
 15328  
                         "",
 15329  
                         "",
 15330  
                         "",
 15331  
                         "",
 15332  
                         "",
 15333  
                         "",
 15334  
                         "\1\uffff",
 15335  
                         "",
 15336  
                         "",
 15337  
                         "",
 15338  
                         "",
 15339  
                         "",
 15340  
                         "\1\uffff",
 15341  
                         "",
 15342  
                         "",
 15343  
                         "",
 15344  
                         "",
 15345  
                         "",
 15346  
                         "",
 15347  
                         "",
 15348  
                         "",
 15349  
                         "",
 15350  
                         "",
 15351  
                         "",
 15352  
                         "",
 15353  
                         "",
 15354  
                         "",
 15355  
                         "",
 15356  
                         "",
 15357  
                         "",
 15358  
                         "",
 15359  
                         "",
 15360  
                         "",
 15361  
                         "",
 15362  
                         "",
 15363  
                         "",
 15364  
                         "",
 15365  
                         "\1\uffff",
 15366  
                         "",
 15367  
                         "",
 15368  
                         "",
 15369  
                         "",
 15370  
                         ""
 15371  
         };
 15372  
 
 15373  1
         static final short[] DFA124_eot = DFA.unpackEncodedString(DFA124_eotS);
 15374  1
         static final short[] DFA124_eof = DFA.unpackEncodedString(DFA124_eofS);
 15375  1
         static final char[] DFA124_min = DFA.unpackEncodedStringToUnsignedChars(DFA124_minS);
 15376  1
         static final char[] DFA124_max = DFA.unpackEncodedStringToUnsignedChars(DFA124_maxS);
 15377  1
         static final short[] DFA124_accept = DFA.unpackEncodedString(DFA124_acceptS);
 15378  1
         static final short[] DFA124_special = DFA.unpackEncodedString(DFA124_specialS);
 15379  
         static final short[][] DFA124_transition;
 15380  
 
 15381  
         static {
 15382  1
                 int numStates = DFA124_transitionS.length;
 15383  1
                 DFA124_transition = new short[numStates][];
 15384  136
                 for (int i=0; i<numStates; i++) {
 15385  135
                         DFA124_transition[i] = DFA.unpackEncodedString(DFA124_transitionS[i]);
 15386  
                 }
 15387  
         }
 15388  
 
 15389  
         protected class DFA124 extends DFA {
 15390  
 
 15391  18
                 public DFA124(BaseRecognizer recognizer) {
 15392  18
                         this.recognizer = recognizer;
 15393  18
                         this.decisionNumber = 124;
 15394  18
                         this.eot = DFA124_eot;
 15395  18
                         this.eof = DFA124_eof;
 15396  18
                         this.min = DFA124_min;
 15397  18
                         this.max = DFA124_max;
 15398  18
                         this.accept = DFA124_accept;
 15399  18
                         this.special = DFA124_special;
 15400  18
                         this.transition = DFA124_transition;
 15401  18
                 }
 15402  
                 @Override
 15403  
                 public String getDescription() {
 15404  0
                         return "1326:1: forControl options {k=3; } : ( enhancedForControl | ( forInit )? ';' ( expression )? ';' ( forUpdate )? );";
 15405  
                 }
 15406  
                 @Override
 15407  
                 public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 15408  0
                         TokenStream input = (TokenStream)_input;
 15409  0
                         int _s = s;
 15410  0
                         switch ( s ) {
 15411  
                                         case 0 : 
 15412  0
                                                 int LA124_59 = input.LA(1);
 15413  
                                                  
 15414  0
                                                 int index124_59 = input.index();
 15415  0
                                                 input.rewind();
 15416  0
                                                 s = -1;
 15417  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15418  0
                                                 else if ( (true) ) {s = 5;}
 15419  
                                                  
 15420  0
                                                 input.seek(index124_59);
 15421  0
                                                 if ( s>=0 ) return s;
 15422  
                                                 break;
 15423  
 
 15424  
                                         case 1 : 
 15425  0
                                                 int LA124_60 = input.LA(1);
 15426  
                                                  
 15427  0
                                                 int index124_60 = input.index();
 15428  0
                                                 input.rewind();
 15429  0
                                                 s = -1;
 15430  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15431  0
                                                 else if ( (true) ) {s = 5;}
 15432  
                                                  
 15433  0
                                                 input.seek(index124_60);
 15434  0
                                                 if ( s>=0 ) return s;
 15435  
                                                 break;
 15436  
 
 15437  
                                         case 2 : 
 15438  0
                                                 int LA124_61 = input.LA(1);
 15439  
                                                  
 15440  0
                                                 int index124_61 = input.index();
 15441  0
                                                 input.rewind();
 15442  0
                                                 s = -1;
 15443  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15444  0
                                                 else if ( (true) ) {s = 5;}
 15445  
                                                  
 15446  0
                                                 input.seek(index124_61);
 15447  0
                                                 if ( s>=0 ) return s;
 15448  
                                                 break;
 15449  
 
 15450  
                                         case 3 : 
 15451  0
                                                 int LA124_62 = input.LA(1);
 15452  
                                                  
 15453  0
                                                 int index124_62 = input.index();
 15454  0
                                                 input.rewind();
 15455  0
                                                 s = -1;
 15456  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15457  0
                                                 else if ( (true) ) {s = 5;}
 15458  
                                                  
 15459  0
                                                 input.seek(index124_62);
 15460  0
                                                 if ( s>=0 ) return s;
 15461  
                                                 break;
 15462  
 
 15463  
                                         case 4 : 
 15464  0
                                                 int LA124_63 = input.LA(1);
 15465  
                                                  
 15466  0
                                                 int index124_63 = input.index();
 15467  0
                                                 input.rewind();
 15468  0
                                                 s = -1;
 15469  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15470  0
                                                 else if ( (true) ) {s = 5;}
 15471  
                                                  
 15472  0
                                                 input.seek(index124_63);
 15473  0
                                                 if ( s>=0 ) return s;
 15474  
                                                 break;
 15475  
 
 15476  
                                         case 5 : 
 15477  0
                                                 int LA124_64 = input.LA(1);
 15478  
                                                  
 15479  0
                                                 int index124_64 = input.index();
 15480  0
                                                 input.rewind();
 15481  0
                                                 s = -1;
 15482  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15483  0
                                                 else if ( (true) ) {s = 5;}
 15484  
                                                  
 15485  0
                                                 input.seek(index124_64);
 15486  0
                                                 if ( s>=0 ) return s;
 15487  
                                                 break;
 15488  
 
 15489  
                                         case 6 : 
 15490  0
                                                 int LA124_65 = input.LA(1);
 15491  
                                                  
 15492  0
                                                 int index124_65 = input.index();
 15493  0
                                                 input.rewind();
 15494  0
                                                 s = -1;
 15495  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15496  0
                                                 else if ( (true) ) {s = 5;}
 15497  
                                                  
 15498  0
                                                 input.seek(index124_65);
 15499  0
                                                 if ( s>=0 ) return s;
 15500  
                                                 break;
 15501  
 
 15502  
                                         case 7 : 
 15503  0
                                                 int LA124_66 = input.LA(1);
 15504  
                                                  
 15505  0
                                                 int index124_66 = input.index();
 15506  0
                                                 input.rewind();
 15507  0
                                                 s = -1;
 15508  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15509  0
                                                 else if ( (true) ) {s = 5;}
 15510  
                                                  
 15511  0
                                                 input.seek(index124_66);
 15512  0
                                                 if ( s>=0 ) return s;
 15513  
                                                 break;
 15514  
 
 15515  
                                         case 8 : 
 15516  0
                                                 int LA124_67 = input.LA(1);
 15517  
                                                  
 15518  0
                                                 int index124_67 = input.index();
 15519  0
                                                 input.rewind();
 15520  0
                                                 s = -1;
 15521  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15522  0
                                                 else if ( (true) ) {s = 5;}
 15523  
                                                  
 15524  0
                                                 input.seek(index124_67);
 15525  0
                                                 if ( s>=0 ) return s;
 15526  
                                                 break;
 15527  
 
 15528  
                                         case 9 : 
 15529  0
                                                 int LA124_68 = input.LA(1);
 15530  
                                                  
 15531  0
                                                 int index124_68 = input.index();
 15532  0
                                                 input.rewind();
 15533  0
                                                 s = -1;
 15534  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15535  0
                                                 else if ( (true) ) {s = 5;}
 15536  
                                                  
 15537  0
                                                 input.seek(index124_68);
 15538  0
                                                 if ( s>=0 ) return s;
 15539  
                                                 break;
 15540  
 
 15541  
                                         case 10 : 
 15542  0
                                                 int LA124_69 = input.LA(1);
 15543  
                                                  
 15544  0
                                                 int index124_69 = input.index();
 15545  0
                                                 input.rewind();
 15546  0
                                                 s = -1;
 15547  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15548  0
                                                 else if ( (true) ) {s = 5;}
 15549  
                                                  
 15550  0
                                                 input.seek(index124_69);
 15551  0
                                                 if ( s>=0 ) return s;
 15552  
                                                 break;
 15553  
 
 15554  
                                         case 11 : 
 15555  0
                                                 int LA124_70 = input.LA(1);
 15556  
                                                  
 15557  0
                                                 int index124_70 = input.index();
 15558  0
                                                 input.rewind();
 15559  0
                                                 s = -1;
 15560  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15561  0
                                                 else if ( (true) ) {s = 5;}
 15562  
                                                  
 15563  0
                                                 input.seek(index124_70);
 15564  0
                                                 if ( s>=0 ) return s;
 15565  
                                                 break;
 15566  
 
 15567  
                                         case 12 : 
 15568  0
                                                 int LA124_71 = input.LA(1);
 15569  
                                                  
 15570  0
                                                 int index124_71 = input.index();
 15571  0
                                                 input.rewind();
 15572  0
                                                 s = -1;
 15573  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15574  0
                                                 else if ( (true) ) {s = 5;}
 15575  
                                                  
 15576  0
                                                 input.seek(index124_71);
 15577  0
                                                 if ( s>=0 ) return s;
 15578  
                                                 break;
 15579  
 
 15580  
                                         case 13 : 
 15581  0
                                                 int LA124_72 = input.LA(1);
 15582  
                                                  
 15583  0
                                                 int index124_72 = input.index();
 15584  0
                                                 input.rewind();
 15585  0
                                                 s = -1;
 15586  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15587  0
                                                 else if ( (true) ) {s = 5;}
 15588  
                                                  
 15589  0
                                                 input.seek(index124_72);
 15590  0
                                                 if ( s>=0 ) return s;
 15591  
                                                 break;
 15592  
 
 15593  
                                         case 14 : 
 15594  0
                                                 int LA124_73 = input.LA(1);
 15595  
                                                  
 15596  0
                                                 int index124_73 = input.index();
 15597  0
                                                 input.rewind();
 15598  0
                                                 s = -1;
 15599  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15600  0
                                                 else if ( (true) ) {s = 5;}
 15601  
                                                  
 15602  0
                                                 input.seek(index124_73);
 15603  0
                                                 if ( s>=0 ) return s;
 15604  
                                                 break;
 15605  
 
 15606  
                                         case 15 : 
 15607  0
                                                 int LA124_74 = input.LA(1);
 15608  
                                                  
 15609  0
                                                 int index124_74 = input.index();
 15610  0
                                                 input.rewind();
 15611  0
                                                 s = -1;
 15612  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15613  0
                                                 else if ( (true) ) {s = 5;}
 15614  
                                                  
 15615  0
                                                 input.seek(index124_74);
 15616  0
                                                 if ( s>=0 ) return s;
 15617  
                                                 break;
 15618  
 
 15619  
                                         case 16 : 
 15620  0
                                                 int LA124_75 = input.LA(1);
 15621  
                                                  
 15622  0
                                                 int index124_75 = input.index();
 15623  0
                                                 input.rewind();
 15624  0
                                                 s = -1;
 15625  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15626  0
                                                 else if ( (true) ) {s = 5;}
 15627  
                                                  
 15628  0
                                                 input.seek(index124_75);
 15629  0
                                                 if ( s>=0 ) return s;
 15630  
                                                 break;
 15631  
 
 15632  
                                         case 17 : 
 15633  0
                                                 int LA124_78 = input.LA(1);
 15634  
                                                  
 15635  0
                                                 int index124_78 = input.index();
 15636  0
                                                 input.rewind();
 15637  0
                                                 s = -1;
 15638  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15639  0
                                                 else if ( (true) ) {s = 5;}
 15640  
                                                  
 15641  0
                                                 input.seek(index124_78);
 15642  0
                                                 if ( s>=0 ) return s;
 15643  
                                                 break;
 15644  
 
 15645  
                                         case 18 : 
 15646  0
                                                 int LA124_79 = input.LA(1);
 15647  
                                                  
 15648  0
                                                 int index124_79 = input.index();
 15649  0
                                                 input.rewind();
 15650  0
                                                 s = -1;
 15651  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15652  0
                                                 else if ( (true) ) {s = 5;}
 15653  
                                                  
 15654  0
                                                 input.seek(index124_79);
 15655  0
                                                 if ( s>=0 ) return s;
 15656  
                                                 break;
 15657  
 
 15658  
                                         case 19 : 
 15659  0
                                                 int LA124_80 = input.LA(1);
 15660  
                                                  
 15661  0
                                                 int index124_80 = input.index();
 15662  0
                                                 input.rewind();
 15663  0
                                                 s = -1;
 15664  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15665  0
                                                 else if ( (true) ) {s = 5;}
 15666  
                                                  
 15667  0
                                                 input.seek(index124_80);
 15668  0
                                                 if ( s>=0 ) return s;
 15669  
                                                 break;
 15670  
 
 15671  
                                         case 20 : 
 15672  0
                                                 int LA124_98 = input.LA(1);
 15673  
                                                  
 15674  0
                                                 int index124_98 = input.index();
 15675  0
                                                 input.rewind();
 15676  0
                                                 s = -1;
 15677  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15678  0
                                                 else if ( (true) ) {s = 5;}
 15679  
                                                  
 15680  0
                                                 input.seek(index124_98);
 15681  0
                                                 if ( s>=0 ) return s;
 15682  
                                                 break;
 15683  
 
 15684  
                                         case 21 : 
 15685  0
                                                 int LA124_104 = input.LA(1);
 15686  
                                                  
 15687  0
                                                 int index124_104 = input.index();
 15688  0
                                                 input.rewind();
 15689  0
                                                 s = -1;
 15690  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15691  0
                                                 else if ( (true) ) {s = 5;}
 15692  
                                                  
 15693  0
                                                 input.seek(index124_104);
 15694  0
                                                 if ( s>=0 ) return s;
 15695  
                                                 break;
 15696  
 
 15697  
                                         case 22 : 
 15698  0
                                                 int LA124_129 = input.LA(1);
 15699  
                                                  
 15700  0
                                                 int index124_129 = input.index();
 15701  0
                                                 input.rewind();
 15702  0
                                                 s = -1;
 15703  0
                                                 if ( (synpred183_Java()) ) {s = 124;}
 15704  0
                                                 else if ( (true) ) {s = 5;}
 15705  
                                                  
 15706  0
                                                 input.seek(index124_129);
 15707  0
                                                 if ( s>=0 ) return s;
 15708  
                                                 break;
 15709  
                         }
 15710  0
                         if (state.backtracking>0) {state.failed=true; return -1;}
 15711  0
                         NoViableAltException nvae =
 15712  0
                                 new NoViableAltException(getDescription(), 124, _s, input);
 15713  0
                         error(nvae);
 15714  0
                         throw nvae;
 15715  
                 }
 15716  
         }
 15717  
 
 15718  
         static final String DFA127_eotS =
 15719  
                 "\u00c1\uffff";
 15720  
         static final String DFA127_eofS =
 15721  
                 "\1\14\u00c0\uffff";
 15722  
         static final String DFA127_minS =
 15723  
                 "\1\36\13\0\u00b5\uffff";
 15724  
         static final String DFA127_maxS =
 15725  
                 "\1\162\13\0\u00b5\uffff";
 15726  
         static final String DFA127_acceptS =
 15727  
                 "\14\uffff\1\2\31\uffff\1\1\u009a\uffff";
 15728  
         static final String DFA127_specialS =
 15729  
                 "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\u00b5\uffff}>";
 15730  1
         static final String[] DFA127_transitionS = {
 15731  
                         "\1\11\2\uffff\1\6\1\uffff\1\14\1\uffff\1\4\2\uffff\1\2\1\14\2\uffff\1"+
 15732  
                         "\3\3\uffff\1\5\2\14\1\12\1\1\1\uffff\1\13\3\uffff\1\14\1\uffff\1\10\63"+
 15733  
                         "\uffff\1\7\1\uffff\1\14",
 15734  
                         "\1\uffff",
 15735  
                         "\1\uffff",
 15736  
                         "\1\uffff",
 15737  
                         "\1\uffff",
 15738  
                         "\1\uffff",
 15739  
                         "\1\uffff",
 15740  
                         "\1\uffff",
 15741  
                         "\1\uffff",
 15742  
                         "\1\uffff",
 15743  
                         "\1\uffff",
 15744  
                         "\1\uffff",
 15745  
                         "",
 15746  
                         "",
 15747  
                         "",
 15748  
                         "",
 15749  
                         "",
 15750  
                         "",
 15751  
                         "",
 15752  
                         "",
 15753  
                         "",
 15754  
                         "",
 15755  
                         "",
 15756  
                         "",
 15757  
                         "",
 15758  
                         "",
 15759  
                         "",
 15760  
                         "",
 15761  
                         "",
 15762  
                         "",
 15763  
                         "",
 15764  
                         "",
 15765  
                         "",
 15766  
                         "",
 15767  
                         "",
 15768  
                         "",
 15769  
                         "",
 15770  
                         "",
 15771  
                         "",
 15772  
                         "",
 15773  
                         "",
 15774  
                         "",
 15775  
                         "",
 15776  
                         "",
 15777  
                         "",
 15778  
                         "",
 15779  
                         "",
 15780  
                         "",
 15781  
                         "",
 15782  
                         "",
 15783  
                         "",
 15784  
                         "",
 15785  
                         "",
 15786  
                         "",
 15787  
                         "",
 15788  
                         "",
 15789  
                         "",
 15790  
                         "",
 15791  
                         "",
 15792  
                         "",
 15793  
                         "",
 15794  
                         "",
 15795  
                         "",
 15796  
                         "",
 15797  
                         "",
 15798  
                         "",
 15799  
                         "",
 15800  
                         "",
 15801  
                         "",
 15802  
                         "",
 15803  
                         "",
 15804  
                         "",
 15805  
                         "",
 15806  
                         "",
 15807  
                         "",
 15808  
                         "",
 15809  
                         "",
 15810  
                         "",
 15811  
                         "",
 15812  
                         "",
 15813  
                         "",
 15814  
                         "",
 15815  
                         "",
 15816  
                         "",
 15817  
                         "",
 15818  
                         "",
 15819  
                         "",
 15820  
                         "",
 15821  
                         "",
 15822  
                         "",
 15823  
                         "",
 15824  
                         "",
 15825  
                         "",
 15826  
                         "",
 15827  
                         "",
 15828  
                         "",
 15829  
                         "",
 15830  
                         "",
 15831  
                         "",
 15832  
                         "",
 15833  
                         "",
 15834  
                         "",
 15835  
                         "",
 15836  
                         "",
 15837  
                         "",
 15838  
                         "",
 15839  
                         "",
 15840  
                         "",
 15841  
                         "",
 15842  
                         "",
 15843  
                         "",
 15844  
                         "",
 15845  
                         "",
 15846  
                         "",
 15847  
                         "",
 15848  
                         "",
 15849  
                         "",
 15850  
                         "",
 15851  
                         "",
 15852  
                         "",
 15853  
                         "",
 15854  
                         "",
 15855  
                         "",
 15856  
                         "",
 15857  
                         "",
 15858  
                         "",
 15859  
                         "",
 15860  
                         "",
 15861  
                         "",
 15862  
                         "",
 15863  
                         "",
 15864  
                         "",
 15865  
                         "",
 15866  
                         "",
 15867  
                         "",
 15868  
                         "",
 15869  
                         "",
 15870  
                         "",
 15871  
                         "",
 15872  
                         "",
 15873  
                         "",
 15874  
                         "",
 15875  
                         "",
 15876  
                         "",
 15877  
                         "",
 15878  
                         "",
 15879  
                         "",
 15880  
                         "",
 15881  
                         "",
 15882  
                         "",
 15883  
                         "",
 15884  
                         "",
 15885  
                         "",
 15886  
                         "",
 15887  
                         "",
 15888  
                         "",
 15889  
                         "",
 15890  
                         "",
 15891  
                         "",
 15892  
                         "",
 15893  
                         "",
 15894  
                         "",
 15895  
                         "",
 15896  
                         "",
 15897  
                         "",
 15898  
                         "",
 15899  
                         "",
 15900  
                         "",
 15901  
                         "",
 15902  
                         "",
 15903  
                         "",
 15904  
                         "",
 15905  
                         "",
 15906  
                         "",
 15907  
                         "",
 15908  
                         "",
 15909  
                         "",
 15910  
                         "",
 15911  
                         "",
 15912  
                         "",
 15913  
                         "",
 15914  
                         "",
 15915  
                         "",
 15916  
                         "",
 15917  
                         "",
 15918  
                         "",
 15919  
                         "",
 15920  
                         "",
 15921  
                         "",
 15922  
                         "",
 15923  
                         "",
 15924  
                         "",
 15925  
                         ""
 15926  
         };
 15927  
 
 15928  1
         static final short[] DFA127_eot = DFA.unpackEncodedString(DFA127_eotS);
 15929  1
         static final short[] DFA127_eof = DFA.unpackEncodedString(DFA127_eofS);
 15930  1
         static final char[] DFA127_min = DFA.unpackEncodedStringToUnsignedChars(DFA127_minS);
 15931  1
         static final char[] DFA127_max = DFA.unpackEncodedStringToUnsignedChars(DFA127_maxS);
 15932  1
         static final short[] DFA127_accept = DFA.unpackEncodedString(DFA127_acceptS);
 15933  1
         static final short[] DFA127_special = DFA.unpackEncodedString(DFA127_specialS);
 15934  
         static final short[][] DFA127_transition;
 15935  
 
 15936  
         static {
 15937  1
                 int numStates = DFA127_transitionS.length;
 15938  1
                 DFA127_transition = new short[numStates][];
 15939  194
                 for (int i=0; i<numStates; i++) {
 15940  193
                         DFA127_transition[i] = DFA.unpackEncodedString(DFA127_transitionS[i]);
 15941  
                 }
 15942  
         }
 15943  
 
 15944  
         protected class DFA127 extends DFA {
 15945  
 
 15946  18
                 public DFA127(BaseRecognizer recognizer) {
 15947  18
                         this.recognizer = recognizer;
 15948  18
                         this.decisionNumber = 127;
 15949  18
                         this.eot = DFA127_eot;
 15950  18
                         this.eof = DFA127_eof;
 15951  18
                         this.min = DFA127_min;
 15952  18
                         this.max = DFA127_max;
 15953  18
                         this.accept = DFA127_accept;
 15954  18
                         this.special = DFA127_special;
 15955  18
                         this.transition = DFA127_transition;
 15956  18
                 }
 15957  
                 @Override
 15958  
                 public String getDescription() {
 15959  0
                         return "1365:31: ( assignmentOperator expression )?";
 15960  
                 }
 15961  
                 @Override
 15962  
                 public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 15963  21
                         TokenStream input = (TokenStream)_input;
 15964  21
                         int _s = s;
 15965  21
                         switch ( s ) {
 15966  
                                         case 0 : 
 15967  21
                                                 int LA127_1 = input.LA(1);
 15968  
                                                  
 15969  21
                                                 int index127_1 = input.index();
 15970  21
                                                 input.rewind();
 15971  21
                                                 s = -1;
 15972  21
                                                 if ( (synpred189_Java()) ) {s = 38;}
 15973  0
                                                 else if ( (true) ) {s = 12;}
 15974  
                                                  
 15975  21
                                                 input.seek(index127_1);
 15976  21
                                                 if ( s>=0 ) return s;
 15977  
                                                 break;
 15978  
 
 15979  
                                         case 1 : 
 15980  0
                                                 int LA127_2 = input.LA(1);
 15981  
                                                  
 15982  0
                                                 int index127_2 = input.index();
 15983  0
                                                 input.rewind();
 15984  0
                                                 s = -1;
 15985  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 15986  0
                                                 else if ( (true) ) {s = 12;}
 15987  
                                                  
 15988  0
                                                 input.seek(index127_2);
 15989  0
                                                 if ( s>=0 ) return s;
 15990  
                                                 break;
 15991  
 
 15992  
                                         case 2 : 
 15993  0
                                                 int LA127_3 = input.LA(1);
 15994  
                                                  
 15995  0
                                                 int index127_3 = input.index();
 15996  0
                                                 input.rewind();
 15997  0
                                                 s = -1;
 15998  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 15999  0
                                                 else if ( (true) ) {s = 12;}
 16000  
                                                  
 16001  0
                                                 input.seek(index127_3);
 16002  0
                                                 if ( s>=0 ) return s;
 16003  
                                                 break;
 16004  
 
 16005  
                                         case 3 : 
 16006  0
                                                 int LA127_4 = input.LA(1);
 16007  
                                                  
 16008  0
                                                 int index127_4 = input.index();
 16009  0
                                                 input.rewind();
 16010  0
                                                 s = -1;
 16011  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 16012  0
                                                 else if ( (true) ) {s = 12;}
 16013  
                                                  
 16014  0
                                                 input.seek(index127_4);
 16015  0
                                                 if ( s>=0 ) return s;
 16016  
                                                 break;
 16017  
 
 16018  
                                         case 4 : 
 16019  0
                                                 int LA127_5 = input.LA(1);
 16020  
                                                  
 16021  0
                                                 int index127_5 = input.index();
 16022  0
                                                 input.rewind();
 16023  0
                                                 s = -1;
 16024  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 16025  0
                                                 else if ( (true) ) {s = 12;}
 16026  
                                                  
 16027  0
                                                 input.seek(index127_5);
 16028  0
                                                 if ( s>=0 ) return s;
 16029  
                                                 break;
 16030  
 
 16031  
                                         case 5 : 
 16032  0
                                                 int LA127_6 = input.LA(1);
 16033  
                                                  
 16034  0
                                                 int index127_6 = input.index();
 16035  0
                                                 input.rewind();
 16036  0
                                                 s = -1;
 16037  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 16038  0
                                                 else if ( (true) ) {s = 12;}
 16039  
                                                  
 16040  0
                                                 input.seek(index127_6);
 16041  0
                                                 if ( s>=0 ) return s;
 16042  
                                                 break;
 16043  
 
 16044  
                                         case 6 : 
 16045  0
                                                 int LA127_7 = input.LA(1);
 16046  
                                                  
 16047  0
                                                 int index127_7 = input.index();
 16048  0
                                                 input.rewind();
 16049  0
                                                 s = -1;
 16050  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 16051  0
                                                 else if ( (true) ) {s = 12;}
 16052  
                                                  
 16053  0
                                                 input.seek(index127_7);
 16054  0
                                                 if ( s>=0 ) return s;
 16055  
                                                 break;
 16056  
 
 16057  
                                         case 7 : 
 16058  0
                                                 int LA127_8 = input.LA(1);
 16059  
                                                  
 16060  0
                                                 int index127_8 = input.index();
 16061  0
                                                 input.rewind();
 16062  0
                                                 s = -1;
 16063  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 16064  0
                                                 else if ( (true) ) {s = 12;}
 16065  
                                                  
 16066  0
                                                 input.seek(index127_8);
 16067  0
                                                 if ( s>=0 ) return s;
 16068  
                                                 break;
 16069  
 
 16070  
                                         case 8 : 
 16071  0
                                                 int LA127_9 = input.LA(1);
 16072  
                                                  
 16073  0
                                                 int index127_9 = input.index();
 16074  0
                                                 input.rewind();
 16075  0
                                                 s = -1;
 16076  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 16077  0
                                                 else if ( (true) ) {s = 12;}
 16078  
                                                  
 16079  0
                                                 input.seek(index127_9);
 16080  0
                                                 if ( s>=0 ) return s;
 16081  
                                                 break;
 16082  
 
 16083  
                                         case 9 : 
 16084  0
                                                 int LA127_10 = input.LA(1);
 16085  
                                                  
 16086  0
                                                 int index127_10 = input.index();
 16087  0
                                                 input.rewind();
 16088  0
                                                 s = -1;
 16089  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 16090  0
                                                 else if ( (true) ) {s = 12;}
 16091  
                                                  
 16092  0
                                                 input.seek(index127_10);
 16093  0
                                                 if ( s>=0 ) return s;
 16094  
                                                 break;
 16095  
 
 16096  
                                         case 10 : 
 16097  0
                                                 int LA127_11 = input.LA(1);
 16098  
                                                  
 16099  0
                                                 int index127_11 = input.index();
 16100  0
                                                 input.rewind();
 16101  0
                                                 s = -1;
 16102  0
                                                 if ( (synpred189_Java()) ) {s = 38;}
 16103  0
                                                 else if ( (true) ) {s = 12;}
 16104  
                                                  
 16105  0
                                                 input.seek(index127_11);
 16106  0
                                                 if ( s>=0 ) return s;
 16107  
                                                 break;
 16108  
                         }
 16109  0
                         if (state.backtracking>0) {state.failed=true; return -1;}
 16110  0
                         NoViableAltException nvae =
 16111  0
                                 new NoViableAltException(getDescription(), 127, _s, input);
 16112  0
                         error(nvae);
 16113  0
                         throw nvae;
 16114  
                 }
 16115  
         }
 16116  
 
 16117  
         static final String DFA137_eotS =
 16118  
                 "\105\uffff";
 16119  
         static final String DFA137_eofS =
 16120  
                 "\1\1\104\uffff";
 16121  
         static final String DFA137_minS =
 16122  
                 "\1\34\26\uffff\2\6\54\uffff";
 16123  
         static final String DFA137_maxS =
 16124  
                 "\1\162\26\uffff\2\163\54\uffff";
 16125  
         static final String DFA137_acceptS =
 16126  
                 "\1\uffff\1\2\32\uffff\1\1\50\uffff";
 16127  
         static final String DFA137_specialS =
 16128  
                 "\105\uffff}>";
 16129  1
         static final String[] DFA137_transitionS = {
 16130  
                         "\1\1\1\uffff\4\1\1\uffff\1\1\1\uffff\1\1\2\uffff\2\1\2\uffff\1\1\3\uffff"+
 16131  
                         "\3\1\1\27\2\1\1\30\1\1\2\uffff\3\1\26\uffff\1\1\33\uffff\4\1",
 16132  
                         "",
 16133  
                         "",
 16134  
                         "",
 16135  
                         "",
 16136  
                         "",
 16137  
                         "",
 16138  
                         "",
 16139  
                         "",
 16140  
                         "",
 16141  
                         "",
 16142  
                         "",
 16143  
                         "",
 16144  
                         "",
 16145  
                         "",
 16146  
                         "",
 16147  
                         "",
 16148  
                         "",
 16149  
                         "",
 16150  
                         "",
 16151  
                         "",
 16152  
                         "",
 16153  
                         "",
 16154  
                         "\2\34\5\uffff\1\34\1\uffff\2\34\6\uffff\2\34\2\uffff\1\34\6\uffff\1"+
 16155  
                         "\34\3\uffff\2\34\2\uffff\2\34\7\uffff\1\1\1\34\11\uffff\1\34\1\uffff"+
 16156  
                         "\1\34\2\uffff\1\34\4\uffff\1\34\2\uffff\1\34\2\uffff\1\34\5\uffff\1\34"+
 16157  
                         "\1\uffff\1\34\1\uffff\2\34\5\uffff\1\34\2\uffff\1\34\2\uffff\1\34\3\uffff"+
 16158  
                         "\1\34\1\uffff\1\34\7\uffff\1\34",
 16159  
                         "\2\34\5\uffff\1\34\1\uffff\2\34\6\uffff\2\34\2\uffff\1\34\6\uffff\1"+
 16160  
                         "\34\3\uffff\2\34\2\uffff\2\34\10\uffff\1\34\1\uffff\1\1\7\uffff\1\34"+
 16161  
                         "\1\uffff\1\34\2\uffff\1\34\4\uffff\1\34\2\uffff\1\34\2\uffff\1\34\5\uffff"+
 16162  
                         "\1\34\1\uffff\1\34\1\uffff\2\34\5\uffff\1\34\2\uffff\1\34\2\uffff\1\34"+
 16163  
                         "\3\uffff\1\34\1\uffff\1\34\7\uffff\1\34",
 16164  
                         "",
 16165  
                         "",
 16166  
                         "",
 16167  
                         "",
 16168  
                         "",
 16169  
                         "",
 16170  
                         "",
 16171  
                         "",
 16172  
                         "",
 16173  
                         "",
 16174  
                         "",
 16175  
                         "",
 16176  
                         "",
 16177  
                         "",
 16178  
                         "",
 16179  
                         "",
 16180  
                         "",
 16181  
                         "",
 16182  
                         "",
 16183  
                         "",
 16184  
                         "",
 16185  
                         "",
 16186  
                         "",
 16187  
                         "",
 16188  
                         "",
 16189  
                         "",
 16190  
                         "",
 16191  
                         "",
 16192  
                         "",
 16193  
                         "",
 16194  
                         "",
 16195  
                         "",
 16196  
                         "",
 16197  
                         "",
 16198  
                         "",
 16199  
                         "",
 16200  
                         "",
 16201  
                         "",
 16202  
                         "",
 16203  
                         "",
 16204  
                         "",
 16205  
                         "",
 16206  
                         "",
 16207  
                         ""
 16208  
         };
 16209  
 
 16210  1
         static final short[] DFA137_eot = DFA.unpackEncodedString(DFA137_eotS);
 16211  1
         static final short[] DFA137_eof = DFA.unpackEncodedString(DFA137_eofS);
 16212  1
         static final char[] DFA137_min = DFA.unpackEncodedStringToUnsignedChars(DFA137_minS);
 16213  1
         static final char[] DFA137_max = DFA.unpackEncodedStringToUnsignedChars(DFA137_maxS);
 16214  1
         static final short[] DFA137_accept = DFA.unpackEncodedString(DFA137_acceptS);
 16215  1
         static final short[] DFA137_special = DFA.unpackEncodedString(DFA137_specialS);
 16216  
         static final short[][] DFA137_transition;
 16217  
 
 16218  
         static {
 16219  1
                 int numStates = DFA137_transitionS.length;
 16220  1
                 DFA137_transition = new short[numStates][];
 16221  70
                 for (int i=0; i<numStates; i++) {
 16222  69
                         DFA137_transition[i] = DFA.unpackEncodedString(DFA137_transitionS[i]);
 16223  
                 }
 16224  
         }
 16225  
 
 16226  
         protected class DFA137 extends DFA {
 16227  
 
 16228  18
                 public DFA137(BaseRecognizer recognizer) {
 16229  18
                         this.recognizer = recognizer;
 16230  18
                         this.decisionNumber = 137;
 16231  18
                         this.eot = DFA137_eot;
 16232  18
                         this.eof = DFA137_eof;
 16233  18
                         this.min = DFA137_min;
 16234  18
                         this.max = DFA137_max;
 16235  18
                         this.accept = DFA137_accept;
 16236  18
                         this.special = DFA137_special;
 16237  18
                         this.transition = DFA137_transition;
 16238  18
                 }
 16239  
                 @Override
 16240  
                 public String getDescription() {
 16241  0
                         return "()* loopback of 1430:25: ( relationalOp shiftExpression )*";
 16242  
                 }
 16243  
         }
 16244  
 
 16245  
         static final String DFA139_eotS =
 16246  
                 "\106\uffff";
 16247  
         static final String DFA139_eofS =
 16248  
                 "\1\3\105\uffff";
 16249  
         static final String DFA139_minS =
 16250  
                 "\1\34\2\6\31\uffff\1\0\24\uffff\1\0\24\uffff";
 16251  
         static final String DFA139_maxS =
 16252  
                 "\1\162\2\163\31\uffff\1\0\24\uffff\1\0\24\uffff";
 16253  
         static final String DFA139_acceptS =
 16254  
                 "\3\uffff\1\2\101\uffff\1\1";
 16255  
         static final String DFA139_specialS =
 16256  
                 "\34\uffff\1\0\24\uffff\1\1\24\uffff}>";
 16257  1
         static final String[] DFA139_transitionS = {
 16258  
                         "\1\3\1\uffff\4\3\1\uffff\1\3\1\uffff\1\3\2\uffff\2\3\2\uffff\1\3\3\uffff"+
 16259  
                         "\3\3\1\1\2\3\1\2\1\3\2\uffff\3\3\26\uffff\1\3\33\uffff\4\3",
 16260  
                         "\2\3\5\uffff\1\3\1\uffff\2\3\6\uffff\2\3\2\uffff\1\3\6\uffff\1\3\3\uffff"+
 16261  
                         "\2\3\2\uffff\2\3\7\uffff\1\34\1\3\11\uffff\1\3\1\uffff\1\3\2\uffff\1"+
 16262  
                         "\3\4\uffff\1\3\2\uffff\1\3\2\uffff\1\3\5\uffff\1\3\1\uffff\1\3\1\uffff"+
 16263  
                         "\2\3\5\uffff\1\3\2\uffff\1\3\2\uffff\1\3\3\uffff\1\3\1\uffff\1\3\7\uffff"+
 16264  
                         "\1\3",
 16265  
                         "\2\3\5\uffff\1\3\1\uffff\2\3\6\uffff\2\3\2\uffff\1\3\6\uffff\1\3\3\uffff"+
 16266  
                         "\2\3\2\uffff\2\3\10\uffff\1\3\1\uffff\1\61\7\uffff\1\3\1\uffff\1\3\2"+
 16267  
                         "\uffff\1\3\4\uffff\1\3\2\uffff\1\3\2\uffff\1\3\5\uffff\1\3\1\uffff\1"+
 16268  
                         "\3\1\uffff\2\3\5\uffff\1\3\2\uffff\1\3\2\uffff\1\3\3\uffff\1\3\1\uffff"+
 16269  
                         "\1\3\7\uffff\1\3",
 16270  
                         "",
 16271  
                         "",
 16272  
                         "",
 16273  
                         "",
 16274  
                         "",
 16275  
                         "",
 16276  
                         "",
 16277  
                         "",
 16278  
                         "",
 16279  
                         "",
 16280  
                         "",
 16281  
                         "",
 16282  
                         "",
 16283  
                         "",
 16284  
                         "",
 16285  
                         "",
 16286  
                         "",
 16287  
                         "",
 16288  
                         "",
 16289  
                         "",
 16290  
                         "",
 16291  
                         "",
 16292  
                         "",
 16293  
                         "",
 16294  
                         "",
 16295  
                         "\1\uffff",
 16296  
                         "",
 16297  
                         "",
 16298  
                         "",
 16299  
                         "",
 16300  
                         "",
 16301  
                         "",
 16302  
                         "",
 16303  
                         "",
 16304  
                         "",
 16305  
                         "",
 16306  
                         "",
 16307  
                         "",
 16308  
                         "",
 16309  
                         "",
 16310  
                         "",
 16311  
                         "",
 16312  
                         "",
 16313  
                         "",
 16314  
                         "",
 16315  
                         "",
 16316  
                         "\1\uffff",
 16317  
                         "",
 16318  
                         "",
 16319  
                         "",
 16320  
                         "",
 16321  
                         "",
 16322  
                         "",
 16323  
                         "",
 16324  
                         "",
 16325  
                         "",
 16326  
                         "",
 16327  
                         "",
 16328  
                         "",
 16329  
                         "",
 16330  
                         "",
 16331  
                         "",
 16332  
                         "",
 16333  
                         "",
 16334  
                         "",
 16335  
                         "",
 16336  
                         ""
 16337  
         };
 16338  
 
 16339  1
         static final short[] DFA139_eot = DFA.unpackEncodedString(DFA139_eotS);
 16340  1
         static final short[] DFA139_eof = DFA.unpackEncodedString(DFA139_eofS);
 16341  1
         static final char[] DFA139_min = DFA.unpackEncodedStringToUnsignedChars(DFA139_minS);
 16342  1
         static final char[] DFA139_max = DFA.unpackEncodedStringToUnsignedChars(DFA139_maxS);
 16343  1
         static final short[] DFA139_accept = DFA.unpackEncodedString(DFA139_acceptS);
 16344  1
         static final short[] DFA139_special = DFA.unpackEncodedString(DFA139_specialS);
 16345  
         static final short[][] DFA139_transition;
 16346  
 
 16347  
         static {
 16348  1
                 int numStates = DFA139_transitionS.length;
 16349  1
                 DFA139_transition = new short[numStates][];
 16350  71
                 for (int i=0; i<numStates; i++) {
 16351  70
                         DFA139_transition[i] = DFA.unpackEncodedString(DFA139_transitionS[i]);
 16352  
                 }
 16353  
         }
 16354  
 
 16355  
         protected class DFA139 extends DFA {
 16356  
 
 16357  18
                 public DFA139(BaseRecognizer recognizer) {
 16358  18
                         this.recognizer = recognizer;
 16359  18
                         this.decisionNumber = 139;
 16360  18
                         this.eot = DFA139_eot;
 16361  18
                         this.eof = DFA139_eof;
 16362  18
                         this.min = DFA139_min;
 16363  18
                         this.max = DFA139_max;
 16364  18
                         this.accept = DFA139_accept;
 16365  18
                         this.special = DFA139_special;
 16366  18
                         this.transition = DFA139_transition;
 16367  18
                 }
 16368  
                 @Override
 16369  
                 public String getDescription() {
 16370  0
                         return "()* loopback of 1445:28: ( shiftOp additiveExpression )*";
 16371  
                 }
 16372  
                 @Override
 16373  
                 public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
 16374  0
                         TokenStream input = (TokenStream)_input;
 16375  0
                         int _s = s;
 16376  0
                         switch ( s ) {
 16377  
                                         case 0 : 
 16378  0
                                                 int LA139_28 = input.LA(1);
 16379  
                                                  
 16380  0
                                                 int index139_28 = input.index();
 16381  0
                                                 input.rewind();
 16382  0
                                                 s = -1;
 16383  0
                                                 if ( (synpred215_Java()) ) {s = 69;}
 16384  0
                                                 else if ( (true) ) {s = 3;}
 16385  
                                                  
 16386  0
                                                 input.seek(index139_28);
 16387  0
                                                 if ( s>=0 ) return s;
 16388  
                                                 break;
 16389  
 
 16390  
                                         case 1 : 
 16391  0
                                                 int LA139_49 = input.LA(1);
 16392  
                                                  
 16393  0
                                                 int index139_49 = input.index();
 16394  0
                                                 input.rewind();
 16395  0
                                                 s = -1;
 16396  0
                                                 if ( (synpred215_Java()) ) {s = 69;}
 16397  0
                                                 else if ( (true) ) {s = 3;}
 16398  
                                                  
 16399  0
                                                 input.seek(index139_49);
 16400  0
                                                 if ( s>=0 ) return s;
 16401  
                                                 break;
 16402  
                         }
 16403  0
                         if (state.backtracking>0) {state.failed=true; return -1;}
 16404  0
                         NoViableAltException nvae =
 16405  0
                                 new NoViableAltException(getDescription(), 139, _s, input);
 16406  0
                         error(nvae);
 16407  0
                         throw nvae;
 16408  
                 }
 16409  
         }
 16410  
 
 16411  1
         public static final BitSet FOLLOW_annotations_in_compilationUnit112 = new BitSet(new long[]{0x2100000000000200L,0x000000033C201010L});
 16412  1
         public static final BitSet FOLLOW_packageDeclaration_in_compilationUnit126 = new BitSet(new long[]{0x2104000000000202L,0x0000000338241010L});
 16413  1
         public static final BitSet FOLLOW_importDeclaration_in_compilationUnit128 = new BitSet(new long[]{0x2104000000000202L,0x0000000338241010L});
 16414  1
         public static final BitSet FOLLOW_typeDeclaration_in_compilationUnit131 = new BitSet(new long[]{0x2104000000000202L,0x0000000338201010L});
 16415  1
         public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_compilationUnit146 = new BitSet(new long[]{0x2104000000000202L,0x0000000338201010L});
 16416  1
         public static final BitSet FOLLOW_typeDeclaration_in_compilationUnit148 = new BitSet(new long[]{0x2104000000000202L,0x0000000338201010L});
 16417  1
         public static final BitSet FOLLOW_packageDeclaration_in_compilationUnit169 = new BitSet(new long[]{0x2104000000000202L,0x0000000338241010L});
 16418  1
         public static final BitSet FOLLOW_importDeclaration_in_compilationUnit173 = new BitSet(new long[]{0x2104000000000202L,0x0000000338241010L});
 16419  1
         public static final BitSet FOLLOW_typeDeclaration_in_compilationUnit176 = new BitSet(new long[]{0x2104000000000202L,0x0000000338201010L});
 16420  1
         public static final BitSet FOLLOW_90_in_packageDeclaration197 = new BitSet(new long[]{0x0000000000010000L});
 16421  1
         public static final BitSet FOLLOW_qualifiedName_in_packageDeclaration201 = new BitSet(new long[]{0x0004000000000000L});
 16422  1
         public static final BitSet FOLLOW_50_in_packageDeclaration203 = new BitSet(new long[]{0x0000000000000002L});
 16423  1
         public static final BitSet FOLLOW_82_in_importDeclaration250 = new BitSet(new long[]{0x0000000000010000L,0x0000000100000000L});
 16424  1
         public static final BitSet FOLLOW_96_in_importDeclaration252 = new BitSet(new long[]{0x0000000000010000L});
 16425  1
         public static final BitSet FOLLOW_qualifiedName_in_importDeclaration265 = new BitSet(new long[]{0x0004200000000000L});
 16426  1
         public static final BitSet FOLLOW_45_in_importDeclaration278 = new BitSet(new long[]{0x0000001000000000L});
 16427  1
         public static final BitSet FOLLOW_36_in_importDeclaration280 = new BitSet(new long[]{0x0004000000000000L});
 16428  1
         public static final BitSet FOLLOW_50_in_importDeclaration287 = new BitSet(new long[]{0x0000000000000002L});
 16429  1
         public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_typeDeclaration317 = new BitSet(new long[]{0x0000000000000002L});
 16430  1
         public static final BitSet FOLLOW_50_in_typeDeclaration327 = new BitSet(new long[]{0x0000000000000002L});
 16431  1
         public static final BitSet FOLLOW_classOrInterfaceModifiers_in_classOrInterfaceDeclaration348 = new BitSet(new long[]{0x0100000000000200L,0x0000000000200010L});
 16432  1
         public static final BitSet FOLLOW_classDeclaration_in_classOrInterfaceDeclaration362 = new BitSet(new long[]{0x0000000000000002L});
 16433  1
         public static final BitSet FOLLOW_interfaceDeclaration_in_classOrInterfaceDeclaration377 = new BitSet(new long[]{0x0000000000000002L});
 16434  1
         public static final BitSet FOLLOW_classOrInterfaceModifier_in_classOrInterfaceModifiers431 = new BitSet(new long[]{0x2100000000000002L,0x0000000338001000L});
 16435  1
         public static final BitSet FOLLOW_annotation_in_classOrInterfaceModifier479 = new BitSet(new long[]{0x0000000000000002L});
 16436  1
         public static final BitSet FOLLOW_93_in_classOrInterfaceModifier489 = new BitSet(new long[]{0x0000000000000002L});
 16437  1
         public static final BitSet FOLLOW_92_in_classOrInterfaceModifier505 = new BitSet(new long[]{0x0000000000000002L});
 16438  1
         public static final BitSet FOLLOW_91_in_classOrInterfaceModifier518 = new BitSet(new long[]{0x0000000000000002L});
 16439  1
         public static final BitSet FOLLOW_61_in_classOrInterfaceModifier533 = new BitSet(new long[]{0x0000000000000002L});
 16440  1
         public static final BitSet FOLLOW_96_in_classOrInterfaceModifier547 = new BitSet(new long[]{0x0000000000000002L});
 16441  1
         public static final BitSet FOLLOW_76_in_classOrInterfaceModifier563 = new BitSet(new long[]{0x0000000000000002L});
 16442  1
         public static final BitSet FOLLOW_97_in_classOrInterfaceModifier581 = new BitSet(new long[]{0x0000000000000002L});
 16443  1
         public static final BitSet FOLLOW_modifier_in_modifiers620 = new BitSet(new long[]{0x2100000000000002L,0x0000111338801000L});
 16444  1
         public static final BitSet FOLLOW_normalClassDeclaration_in_classDeclaration666 = new BitSet(new long[]{0x0000000000000002L});
 16445  1
         public static final BitSet FOLLOW_enumDeclaration_in_classDeclaration677 = new BitSet(new long[]{0x0000000000000002L});
 16446  1
         public static final BitSet FOLLOW_68_in_normalClassDeclaration710 = new BitSet(new long[]{0x0000000000010000L});
 16447  1
         public static final BitSet FOLLOW_Identifier_in_normalClassDeclaration714 = new BitSet(new long[]{0x0008000000000000L,0x0000400000020400L});
 16448  1
         public static final BitSet FOLLOW_typeParameters_in_normalClassDeclaration727 = new BitSet(new long[]{0x0000000000000000L,0x0000400000020400L});
 16449  1
         public static final BitSet FOLLOW_74_in_normalClassDeclaration743 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16450  1
         public static final BitSet FOLLOW_type_in_normalClassDeclaration747 = new BitSet(new long[]{0x0000000000000000L,0x0000400000020000L});
 16451  1
         public static final BitSet FOLLOW_81_in_normalClassDeclaration763 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16452  1
         public static final BitSet FOLLOW_typeList_in_normalClassDeclaration767 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16453  1
         public static final BitSet FOLLOW_classBody_in_normalClassDeclaration801 = new BitSet(new long[]{0x0000000000000002L});
 16454  1
         public static final BitSet FOLLOW_51_in_typeParameters848 = new BitSet(new long[]{0x0000000000010000L});
 16455  1
         public static final BitSet FOLLOW_typeParameter_in_typeParameters879 = new BitSet(new long[]{0x0040020000000000L});
 16456  1
         public static final BitSet FOLLOW_41_in_typeParameters897 = new BitSet(new long[]{0x0000000000010000L});
 16457  1
         public static final BitSet FOLLOW_typeParameter_in_typeParameters901 = new BitSet(new long[]{0x0040020000000000L});
 16458  1
         public static final BitSet FOLLOW_54_in_typeParameters924 = new BitSet(new long[]{0x0000000000000002L});
 16459  1
         public static final BitSet FOLLOW_Identifier_in_typeParameter1004 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000400L});
 16460  1
         public static final BitSet FOLLOW_74_in_typeParameter1030 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16461  1
         public static final BitSet FOLLOW_typeBound_in_typeParameter1034 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
 16462  1
         public static final BitSet FOLLOW_98_in_typeParameter1058 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16463  1
         public static final BitSet FOLLOW_typeBound_in_typeParameter1062 = new BitSet(new long[]{0x0000000000000002L});
 16464  1
         public static final BitSet FOLLOW_type_in_typeBound1126 = new BitSet(new long[]{0x0000000100000002L});
 16465  1
         public static final BitSet FOLLOW_32_in_typeBound1144 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16466  1
         public static final BitSet FOLLOW_type_in_typeBound1148 = new BitSet(new long[]{0x0000000100000002L});
 16467  1
         public static final BitSet FOLLOW_ENUM_in_enumDeclaration1200 = new BitSet(new long[]{0x0000000000010000L});
 16468  1
         public static final BitSet FOLLOW_Identifier_in_enumDeclaration1204 = new BitSet(new long[]{0x0000000000000000L,0x0000400000020000L});
 16469  1
         public static final BitSet FOLLOW_81_in_enumDeclaration1207 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16470  1
         public static final BitSet FOLLOW_typeList_in_enumDeclaration1211 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16471  1
         public static final BitSet FOLLOW_enumBody_in_enumDeclaration1245 = new BitSet(new long[]{0x0000000000000002L});
 16472  1
         public static final BitSet FOLLOW_110_in_enumBody1274 = new BitSet(new long[]{0x0104020000010000L,0x0004000000000000L});
 16473  1
         public static final BitSet FOLLOW_enumConstants_in_enumBody1276 = new BitSet(new long[]{0x0004020000000000L,0x0004000000000000L});
 16474  1
         public static final BitSet FOLLOW_41_in_enumBody1279 = new BitSet(new long[]{0x0004000000000000L,0x0004000000000000L});
 16475  1
         public static final BitSet FOLLOW_enumBodyDeclarations_in_enumBody1282 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
 16476  1
         public static final BitSet FOLLOW_114_in_enumBody1285 = new BitSet(new long[]{0x0000000000000002L});
 16477  1
         public static final BitSet FOLLOW_enumConstant_in_enumConstants1304 = new BitSet(new long[]{0x0000020000000002L});
 16478  1
         public static final BitSet FOLLOW_41_in_enumConstants1307 = new BitSet(new long[]{0x0100000000010000L});
 16479  1
         public static final BitSet FOLLOW_enumConstant_in_enumConstants1309 = new BitSet(new long[]{0x0000020000000002L});
 16480  1
         public static final BitSet FOLLOW_annotations_in_enumConstant1330 = new BitSet(new long[]{0x0000000000010000L});
 16481  1
         public static final BitSet FOLLOW_Identifier_in_enumConstant1343 = new BitSet(new long[]{0x0000000400000002L,0x0000400000000000L});
 16482  1
         public static final BitSet FOLLOW_arguments_in_enumConstant1382 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
 16483  1
         public static final BitSet FOLLOW_classBody_in_enumConstant1395 = new BitSet(new long[]{0x0000000000000002L});
 16484  1
         public static final BitSet FOLLOW_50_in_enumBodyDeclarations1416 = new BitSet(new long[]{0x610C000000010202L,0x00005913B8F05119L});
 16485  1
         public static final BitSet FOLLOW_classBodyDeclaration_in_enumBodyDeclarations1419 = new BitSet(new long[]{0x610C000000010202L,0x00005913B8F05119L});
 16486  1
         public static final BitSet FOLLOW_normalInterfaceDeclaration_in_interfaceDeclaration1446 = new BitSet(new long[]{0x0000000000000002L});
 16487  1
         public static final BitSet FOLLOW_annotationTypeDeclaration_in_interfaceDeclaration1457 = new BitSet(new long[]{0x0000000000000002L});
 16488  1
         public static final BitSet FOLLOW_85_in_normalInterfaceDeclaration1486 = new BitSet(new long[]{0x0000000000010000L});
 16489  1
         public static final BitSet FOLLOW_Identifier_in_normalInterfaceDeclaration1490 = new BitSet(new long[]{0x0008000000000000L,0x0000400000000400L});
 16490  1
         public static final BitSet FOLLOW_typeParameters_in_normalInterfaceDeclaration1495 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000400L});
 16491  1
         public static final BitSet FOLLOW_74_in_normalInterfaceDeclaration1508 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16492  1
         public static final BitSet FOLLOW_typeList_in_normalInterfaceDeclaration1512 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16493  1
         public static final BitSet FOLLOW_interfaceBody_in_normalInterfaceDeclaration1546 = new BitSet(new long[]{0x0000000000000002L});
 16494  1
         public static final BitSet FOLLOW_type_in_typeList1581 = new BitSet(new long[]{0x0000020000000002L});
 16495  1
         public static final BitSet FOLLOW_41_in_typeList1601 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16496  1
         public static final BitSet FOLLOW_type_in_typeList1605 = new BitSet(new long[]{0x0000020000000002L});
 16497  1
         public static final BitSet FOLLOW_110_in_classBody1638 = new BitSet(new long[]{0x610C000000010200L,0x00045913B8F05119L});
 16498  1
         public static final BitSet FOLLOW_classBodyDeclaration_in_classBody1640 = new BitSet(new long[]{0x610C000000010200L,0x00045913B8F05119L});
 16499  1
         public static final BitSet FOLLOW_114_in_classBody1643 = new BitSet(new long[]{0x0000000000000002L});
 16500  1
         public static final BitSet FOLLOW_110_in_interfaceBody1666 = new BitSet(new long[]{0x610C000000010200L,0x00041913B8F05119L});
 16501  1
         public static final BitSet FOLLOW_interfaceBodyDeclaration_in_interfaceBody1668 = new BitSet(new long[]{0x610C000000010200L,0x00041913B8F05119L});
 16502  1
         public static final BitSet FOLLOW_114_in_interfaceBody1671 = new BitSet(new long[]{0x0000000000000002L});
 16503  1
         public static final BitSet FOLLOW_50_in_classBodyDeclaration1690 = new BitSet(new long[]{0x0000000000000002L});
 16504  1
         public static final BitSet FOLLOW_96_in_classBodyDeclaration1700 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16505  1
         public static final BitSet FOLLOW_block_in_classBodyDeclaration1703 = new BitSet(new long[]{0x0000000000000002L});
 16506  1
         public static final BitSet FOLLOW_modifiers_in_classBodyDeclaration1715 = new BitSet(new long[]{0x4108000000010200L,0x0000080080704119L});
 16507  1
         public static final BitSet FOLLOW_memberDecl_in_classBodyDeclaration1717 = new BitSet(new long[]{0x0000000000000002L});
 16508  1
         public static final BitSet FOLLOW_genericMethodOrConstructorDecl_in_memberDecl1742 = new BitSet(new long[]{0x0000000000000002L});
 16509  1
         public static final BitSet FOLLOW_memberDeclaration_in_memberDecl1753 = new BitSet(new long[]{0x0000000000000002L});
 16510  1
         public static final BitSet FOLLOW_107_in_memberDecl1764 = new BitSet(new long[]{0x0000000000010000L});
 16511  1
         public static final BitSet FOLLOW_Identifier_in_memberDecl1768 = new BitSet(new long[]{0x0000000400000000L});
 16512  1
         public static final BitSet FOLLOW_voidMethodDeclaratorRest_in_memberDecl1770 = new BitSet(new long[]{0x0000000000000002L});
 16513  1
         public static final BitSet FOLLOW_Identifier_in_memberDecl1783 = new BitSet(new long[]{0x0000000400000000L});
 16514  1
         public static final BitSet FOLLOW_constructorDeclaratorRest_in_memberDecl1785 = new BitSet(new long[]{0x0000000000000002L});
 16515  1
         public static final BitSet FOLLOW_interfaceDeclaration_in_memberDecl1796 = new BitSet(new long[]{0x0000000000000002L});
 16516  1
         public static final BitSet FOLLOW_classDeclaration_in_memberDecl1807 = new BitSet(new long[]{0x0000000000000002L});
 16517  1
         public static final BitSet FOLLOW_type_in_memberDeclaration1834 = new BitSet(new long[]{0x0000000000010000L});
 16518  1
         public static final BitSet FOLLOW_methodDeclaration_in_memberDeclaration1848 = new BitSet(new long[]{0x0000000000000002L});
 16519  1
         public static final BitSet FOLLOW_fieldDeclaration_in_memberDeclaration1863 = new BitSet(new long[]{0x0000000000000002L});
 16520  1
         public static final BitSet FOLLOW_typeParameters_in_genericMethodOrConstructorDecl1896 = new BitSet(new long[]{0x4000000000010000L,0x0000080080504109L});
 16521  1
         public static final BitSet FOLLOW_genericMethodOrConstructorRest_in_genericMethodOrConstructorDecl1898 = new BitSet(new long[]{0x0000000000000002L});
 16522  1
         public static final BitSet FOLLOW_type_in_genericMethodOrConstructorRest1930 = new BitSet(new long[]{0x0000000000010000L});
 16523  1
         public static final BitSet FOLLOW_107_in_genericMethodOrConstructorRest1936 = new BitSet(new long[]{0x0000000000010000L});
 16524  1
         public static final BitSet FOLLOW_Identifier_in_genericMethodOrConstructorRest1952 = new BitSet(new long[]{0x0000000400000000L});
 16525  1
         public static final BitSet FOLLOW_methodDeclaratorRest_in_genericMethodOrConstructorRest1962 = new BitSet(new long[]{0x0000000000000002L});
 16526  1
         public static final BitSet FOLLOW_Identifier_in_genericMethodOrConstructorRest1975 = new BitSet(new long[]{0x0000000400000000L});
 16527  1
         public static final BitSet FOLLOW_constructorDeclaratorRest_in_genericMethodOrConstructorRest1985 = new BitSet(new long[]{0x0000000000000002L});
 16528  1
         public static final BitSet FOLLOW_Identifier_in_methodDeclaration2008 = new BitSet(new long[]{0x0000000400000000L});
 16529  1
         public static final BitSet FOLLOW_methodDeclaratorRest_in_methodDeclaration2010 = new BitSet(new long[]{0x0000000000000002L});
 16530  1
         public static final BitSet FOLLOW_variableDeclarators_in_fieldDeclaration2031 = new BitSet(new long[]{0x0004000000000000L});
 16531  1
         public static final BitSet FOLLOW_50_in_fieldDeclaration2034 = new BitSet(new long[]{0x0000000000000002L});
 16532  1
         public static final BitSet FOLLOW_modifiers_in_interfaceBodyDeclaration2063 = new BitSet(new long[]{0x4108000000010200L,0x0000080080704119L});
 16533  1
         public static final BitSet FOLLOW_interfaceMemberDecl_in_interfaceBodyDeclaration2065 = new BitSet(new long[]{0x0000000000000002L});
 16534  1
         public static final BitSet FOLLOW_50_in_interfaceBodyDeclaration2076 = new BitSet(new long[]{0x0000000000000002L});
 16535  1
         public static final BitSet FOLLOW_interfaceMethodOrFieldDecl_in_interfaceMemberDecl2096 = new BitSet(new long[]{0x0000000000000002L});
 16536  1
         public static final BitSet FOLLOW_interfaceGenericMethodDecl_in_interfaceMemberDecl2107 = new BitSet(new long[]{0x0000000000000002L});
 16537  1
         public static final BitSet FOLLOW_107_in_interfaceMemberDecl2118 = new BitSet(new long[]{0x0000000000010000L});
 16538  1
         public static final BitSet FOLLOW_Identifier_in_interfaceMemberDecl2122 = new BitSet(new long[]{0x0000000400000000L});
 16539  1
         public static final BitSet FOLLOW_voidInterfaceMethodDeclaratorRest_in_interfaceMemberDecl2132 = new BitSet(new long[]{0x0000000000000002L});
 16540  1
         public static final BitSet FOLLOW_interfaceDeclaration_in_interfaceMemberDecl2143 = new BitSet(new long[]{0x0000000000000002L});
 16541  1
         public static final BitSet FOLLOW_classDeclaration_in_interfaceMemberDecl2154 = new BitSet(new long[]{0x0000000000000002L});
 16542  1
         public static final BitSet FOLLOW_type_in_interfaceMethodOrFieldDecl2177 = new BitSet(new long[]{0x0000000000010000L});
 16543  1
         public static final BitSet FOLLOW_Identifier_in_interfaceMethodOrFieldDecl2181 = new BitSet(new long[]{0x0210000400000000L});
 16544  1
         public static final BitSet FOLLOW_interfaceMethodOrFieldRest_in_interfaceMethodOrFieldDecl2191 = new BitSet(new long[]{0x0000000000000002L});
 16545  1
         public static final BitSet FOLLOW_constantDeclaratorsRest_in_interfaceMethodOrFieldRest2212 = new BitSet(new long[]{0x0004000000000000L});
 16546  1
         public static final BitSet FOLLOW_50_in_interfaceMethodOrFieldRest2215 = new BitSet(new long[]{0x0000000000000002L});
 16547  1
         public static final BitSet FOLLOW_interfaceMethodDeclaratorRest_in_interfaceMethodOrFieldRest2225 = new BitSet(new long[]{0x0000000000000002L});
 16548  1
         public static final BitSet FOLLOW_formalParameters_in_methodDeclaratorRest2256 = new BitSet(new long[]{0x0204000000000000L,0x0000408000000000L});
 16549  1
         public static final BitSet FOLLOW_57_in_methodDeclaratorRest2259 = new BitSet(new long[]{0x0400000000000000L});
 16550  1
         public static final BitSet FOLLOW_58_in_methodDeclaratorRest2261 = new BitSet(new long[]{0x0204000000000000L,0x0000408000000000L});
 16551  1
         public static final BitSet FOLLOW_103_in_methodDeclaratorRest2277 = new BitSet(new long[]{0x0000000000010000L});
 16552  1
         public static final BitSet FOLLOW_qualifiedNameList_in_methodDeclaratorRest2279 = new BitSet(new long[]{0x0004000000000000L,0x0000400000000000L});
 16553  1
         public static final BitSet FOLLOW_methodBody_in_methodDeclaratorRest2295 = new BitSet(new long[]{0x0000000000000002L});
 16554  1
         public static final BitSet FOLLOW_50_in_methodDeclaratorRest2309 = new BitSet(new long[]{0x0000000000000002L});
 16555  1
         public static final BitSet FOLLOW_formalParameters_in_voidMethodDeclaratorRest2368 = new BitSet(new long[]{0x0004000000000000L,0x0000408000000000L});
 16556  1
         public static final BitSet FOLLOW_103_in_voidMethodDeclaratorRest2371 = new BitSet(new long[]{0x0000000000010000L});
 16557  1
         public static final BitSet FOLLOW_qualifiedNameList_in_voidMethodDeclaratorRest2373 = new BitSet(new long[]{0x0004000000000000L,0x0000400000000000L});
 16558  1
         public static final BitSet FOLLOW_methodBody_in_voidMethodDeclaratorRest2389 = new BitSet(new long[]{0x0000000000000002L});
 16559  1
         public static final BitSet FOLLOW_50_in_voidMethodDeclaratorRest2403 = new BitSet(new long[]{0x0000000000000002L});
 16560  1
         public static final BitSet FOLLOW_formalParameters_in_interfaceMethodDeclaratorRest2462 = new BitSet(new long[]{0x0204000000000000L,0x0000008000000000L});
 16561  1
         public static final BitSet FOLLOW_57_in_interfaceMethodDeclaratorRest2465 = new BitSet(new long[]{0x0400000000000000L});
 16562  1
         public static final BitSet FOLLOW_58_in_interfaceMethodDeclaratorRest2467 = new BitSet(new long[]{0x0204000000000000L,0x0000008000000000L});
 16563  1
         public static final BitSet FOLLOW_103_in_interfaceMethodDeclaratorRest2483 = new BitSet(new long[]{0x0000000000010000L});
 16564  1
         public static final BitSet FOLLOW_qualifiedNameList_in_interfaceMethodDeclaratorRest2485 = new BitSet(new long[]{0x0004000000000000L});
 16565  1
         public static final BitSet FOLLOW_50_in_interfaceMethodDeclaratorRest2497 = new BitSet(new long[]{0x0000000000000002L});
 16566  1
         public static final BitSet FOLLOW_typeParameters_in_interfaceGenericMethodDecl2546 = new BitSet(new long[]{0x4000000000010000L,0x0000080080504109L});
 16567  1
         public static final BitSet FOLLOW_type_in_interfaceGenericMethodDecl2551 = new BitSet(new long[]{0x0000000000010000L});
 16568  1
         public static final BitSet FOLLOW_107_in_interfaceGenericMethodDecl2557 = new BitSet(new long[]{0x0000000000010000L});
 16569  1
         public static final BitSet FOLLOW_Identifier_in_interfaceGenericMethodDecl2573 = new BitSet(new long[]{0x0000000400000000L});
 16570  1
         public static final BitSet FOLLOW_interfaceMethodDeclaratorRest_in_interfaceGenericMethodDecl2583 = new BitSet(new long[]{0x0000000000000002L});
 16571  1
         public static final BitSet FOLLOW_formalParameters_in_voidInterfaceMethodDeclaratorRest2614 = new BitSet(new long[]{0x0004000000000000L,0x0000008000000000L});
 16572  1
         public static final BitSet FOLLOW_103_in_voidInterfaceMethodDeclaratorRest2617 = new BitSet(new long[]{0x0000000000010000L});
 16573  1
         public static final BitSet FOLLOW_qualifiedNameList_in_voidInterfaceMethodDeclaratorRest2619 = new BitSet(new long[]{0x0004000000000000L});
 16574  1
         public static final BitSet FOLLOW_50_in_voidInterfaceMethodDeclaratorRest2631 = new BitSet(new long[]{0x0000000000000002L});
 16575  1
         public static final BitSet FOLLOW_formalParameters_in_constructorDeclaratorRest2680 = new BitSet(new long[]{0x0000000000000000L,0x0000408000000000L});
 16576  1
         public static final BitSet FOLLOW_103_in_constructorDeclaratorRest2701 = new BitSet(new long[]{0x0000000000010000L});
 16577  1
         public static final BitSet FOLLOW_qualifiedNameList_in_constructorDeclaratorRest2703 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16578  1
         public static final BitSet FOLLOW_constructorBody_in_constructorDeclaratorRest2715 = new BitSet(new long[]{0x0000000000000002L});
 16579  1
         public static final BitSet FOLLOW_Identifier_in_constantDeclarator2764 = new BitSet(new long[]{0x0210000000000000L});
 16580  1
         public static final BitSet FOLLOW_constantDeclaratorRest_in_constantDeclarator2776 = new BitSet(new long[]{0x0000000000000002L});
 16581  1
         public static final BitSet FOLLOW_variableDeclarator_in_variableDeclarators2797 = new BitSet(new long[]{0x0000020000000002L});
 16582  1
         public static final BitSet FOLLOW_41_in_variableDeclarators2809 = new BitSet(new long[]{0x0000000000010000L});
 16583  1
         public static final BitSet FOLLOW_variableDeclarator_in_variableDeclarators2811 = new BitSet(new long[]{0x0000020000000002L});
 16584  1
         public static final BitSet FOLLOW_variableDeclaratorId_in_variableDeclarator2844 = new BitSet(new long[]{0x0010000000000002L});
 16585  1
         public static final BitSet FOLLOW_equalsVariableInitializer_in_variableDeclarator2896 = new BitSet(new long[]{0x0000000000000002L});
 16586  1
         public static final BitSet FOLLOW_constantDeclaratorRest_in_constantDeclaratorsRest2951 = new BitSet(new long[]{0x0000020000000002L});
 16587  1
         public static final BitSet FOLLOW_41_in_constantDeclaratorsRest2963 = new BitSet(new long[]{0x0000000000010000L});
 16588  1
         public static final BitSet FOLLOW_constantDeclarator_in_constantDeclaratorsRest2965 = new BitSet(new long[]{0x0000020000000002L});
 16589  1
         public static final BitSet FOLLOW_57_in_constantDeclaratorRest2997 = new BitSet(new long[]{0x0400000000000000L});
 16590  1
         public static final BitSet FOLLOW_58_in_constantDeclaratorRest2999 = new BitSet(new long[]{0x0210000000000000L});
 16591  1
         public static final BitSet FOLLOW_equalsVariableInitializer_in_constantDeclaratorRest3028 = new BitSet(new long[]{0x0000000000000002L});
 16592  1
         public static final BitSet FOLLOW_Identifier_in_variableDeclaratorId3057 = new BitSet(new long[]{0x0200000000000002L});
 16593  1
         public static final BitSet FOLLOW_57_in_variableDeclaratorId3060 = new BitSet(new long[]{0x0400000000000000L});
 16594  1
         public static final BitSet FOLLOW_58_in_variableDeclaratorId3062 = new BitSet(new long[]{0x0200000000000002L});
 16595  1
         public static final BitSet FOLLOW_52_in_equalsVariableInitializer3092 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00084A2483504909L});
 16596  1
         public static final BitSet FOLLOW_variableInitializer_in_equalsVariableInitializer3094 = new BitSet(new long[]{0x0000000000000002L});
 16597  1
         public static final BitSet FOLLOW_arrayInitializer_in_variableInitializer3113 = new BitSet(new long[]{0x0000000000000002L});
 16598  1
         public static final BitSet FOLLOW_expression_in_variableInitializer3123 = new BitSet(new long[]{0x0000000000000002L});
 16599  1
         public static final BitSet FOLLOW_110_in_arrayInitializer3150 = new BitSet(new long[]{0x40000CC40981A0C0L,0x000C4A2483504909L});
 16600  1
         public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer3153 = new BitSet(new long[]{0x0000020000000000L,0x0004000000000000L});
 16601  1
         public static final BitSet FOLLOW_41_in_arrayInitializer3156 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00084A2483504909L});
 16602  1
         public static final BitSet FOLLOW_variableInitializer_in_arrayInitializer3158 = new BitSet(new long[]{0x0000020000000000L,0x0004000000000000L});
 16603  1
         public static final BitSet FOLLOW_41_in_arrayInitializer3163 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
 16604  1
         public static final BitSet FOLLOW_114_in_arrayInitializer3170 = new BitSet(new long[]{0x0000000000000002L});
 16605  1
         public static final BitSet FOLLOW_annotation_in_modifier3193 = new BitSet(new long[]{0x0000000000000002L});
 16606  1
         public static final BitSet FOLLOW_93_in_modifier3203 = new BitSet(new long[]{0x0000000000000002L});
 16607  1
         public static final BitSet FOLLOW_92_in_modifier3221 = new BitSet(new long[]{0x0000000000000002L});
 16608  1
         public static final BitSet FOLLOW_91_in_modifier3236 = new BitSet(new long[]{0x0000000000000002L});
 16609  1
         public static final BitSet FOLLOW_96_in_modifier3253 = new BitSet(new long[]{0x0000000000000002L});
 16610  1
         public static final BitSet FOLLOW_61_in_modifier3271 = new BitSet(new long[]{0x0000000000000002L});
 16611  1
         public static final BitSet FOLLOW_76_in_modifier3287 = new BitSet(new long[]{0x0000000000000002L});
 16612  1
         public static final BitSet FOLLOW_87_in_modifier3306 = new BitSet(new long[]{0x0000000000000002L});
 16613  1
         public static final BitSet FOLLOW_100_in_modifier3324 = new BitSet(new long[]{0x0000000000000002L});
 16614  1
         public static final BitSet FOLLOW_104_in_modifier3336 = new BitSet(new long[]{0x0000000000000002L});
 16615  1
         public static final BitSet FOLLOW_108_in_modifier3351 = new BitSet(new long[]{0x0000000000000002L});
 16616  1
         public static final BitSet FOLLOW_97_in_modifier3367 = new BitSet(new long[]{0x0000000000000002L});
 16617  1
         public static final BitSet FOLLOW_qualifiedName_in_packageOrTypeName3386 = new BitSet(new long[]{0x0000000000000002L});
 16618  1
         public static final BitSet FOLLOW_Identifier_in_enumConstantName3405 = new BitSet(new long[]{0x0000000000000002L});
 16619  1
         public static final BitSet FOLLOW_qualifiedName_in_typeName3424 = new BitSet(new long[]{0x0000000000000002L});
 16620  1
         public static final BitSet FOLLOW_classOrInterfaceType_in_type3471 = new BitSet(new long[]{0x0200000000000002L});
 16621  1
         public static final BitSet FOLLOW_57_in_type3488 = new BitSet(new long[]{0x0400000000000000L});
 16622  1
         public static final BitSet FOLLOW_58_in_type3490 = new BitSet(new long[]{0x0200000000000002L});
 16623  1
         public static final BitSet FOLLOW_primitiveType_in_type3540 = new BitSet(new long[]{0x0200000000000002L});
 16624  1
         public static final BitSet FOLLOW_57_in_type3566 = new BitSet(new long[]{0x0400000000000000L});
 16625  1
         public static final BitSet FOLLOW_58_in_type3568 = new BitSet(new long[]{0x0200000000000002L});
 16626  1
         public static final BitSet FOLLOW_Identifier_in_classOrInterfaceType3655 = new BitSet(new long[]{0x0008200000000002L});
 16627  1
         public static final BitSet FOLLOW_typeArguments_in_classOrInterfaceType3660 = new BitSet(new long[]{0x0000200000000002L});
 16628  1
         public static final BitSet FOLLOW_45_in_classOrInterfaceType3681 = new BitSet(new long[]{0x0000000000010000L});
 16629  1
         public static final BitSet FOLLOW_Identifier_in_classOrInterfaceType3685 = new BitSet(new long[]{0x0008200000000002L});
 16630  1
         public static final BitSet FOLLOW_typeArguments_in_classOrInterfaceType3704 = new BitSet(new long[]{0x0000200000000002L});
 16631  1
         public static final BitSet FOLLOW_76_in_variableModifier3839 = new BitSet(new long[]{0x0000000000000002L});
 16632  1
         public static final BitSet FOLLOW_annotation_in_variableModifier3851 = new BitSet(new long[]{0x0000000000000002L});
 16633  1
         public static final BitSet FOLLOW_51_in_typeArguments3870 = new BitSet(new long[]{0x4080000000010000L,0x0000000080504109L});
 16634  1
         public static final BitSet FOLLOW_typeArgument_in_typeArguments3872 = new BitSet(new long[]{0x0040020000000000L});
 16635  1
         public static final BitSet FOLLOW_41_in_typeArguments3875 = new BitSet(new long[]{0x4080000000010000L,0x0000000080504109L});
 16636  1
         public static final BitSet FOLLOW_typeArgument_in_typeArguments3877 = new BitSet(new long[]{0x0040020000000000L});
 16637  1
         public static final BitSet FOLLOW_54_in_typeArguments3881 = new BitSet(new long[]{0x0000000000000002L});
 16638  1
         public static final BitSet FOLLOW_type_in_typeArgument3904 = new BitSet(new long[]{0x0000000000000002L});
 16639  1
         public static final BitSet FOLLOW_55_in_typeArgument3914 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000400L});
 16640  1
         public static final BitSet FOLLOW_set_in_typeArgument3917 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16641  1
         public static final BitSet FOLLOW_type_in_typeArgument3925 = new BitSet(new long[]{0x0000000000000002L});
 16642  1
         public static final BitSet FOLLOW_qualifiedName_in_qualifiedNameList3950 = new BitSet(new long[]{0x0000020000000002L});
 16643  1
         public static final BitSet FOLLOW_41_in_qualifiedNameList3953 = new BitSet(new long[]{0x0000000000010000L});
 16644  1
         public static final BitSet FOLLOW_qualifiedName_in_qualifiedNameList3955 = new BitSet(new long[]{0x0000020000000002L});
 16645  1
         public static final BitSet FOLLOW_34_in_formalParameters3980 = new BitSet(new long[]{0x4100000800010000L,0x0000000080505109L});
 16646  1
         public static final BitSet FOLLOW_formalParameterDecls_in_formalParameters3983 = new BitSet(new long[]{0x0000000800000000L});
 16647  1
         public static final BitSet FOLLOW_35_in_formalParameters3988 = new BitSet(new long[]{0x0000000000000002L});
 16648  1
         public static final BitSet FOLLOW_variableModifiers_in_formalParameterDecls4014 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16649  1
         public static final BitSet FOLLOW_type_in_formalParameterDecls4018 = new BitSet(new long[]{0x0000400000010000L});
 16650  1
         public static final BitSet FOLLOW_formalParameterDeclsRest_in_formalParameterDecls4020 = new BitSet(new long[]{0x0000000000000002L});
 16651  1
         public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest4051 = new BitSet(new long[]{0x0000020000000002L});
 16652  1
         public static final BitSet FOLLOW_41_in_formalParameterDeclsRest4072 = new BitSet(new long[]{0x4100000000010000L,0x0000000080505109L});
 16653  1
         public static final BitSet FOLLOW_formalParameterDecls_in_formalParameterDeclsRest4074 = new BitSet(new long[]{0x0000000000000002L});
 16654  1
         public static final BitSet FOLLOW_46_in_formalParameterDeclsRest4087 = new BitSet(new long[]{0x0000000000010000L});
 16655  1
         public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameterDeclsRest4091 = new BitSet(new long[]{0x0000000000000002L});
 16656  1
         public static final BitSet FOLLOW_block_in_methodBody4124 = new BitSet(new long[]{0x0000000000000002L});
 16657  1
         public static final BitSet FOLLOW_110_in_constructorBody4161 = new BitSet(new long[]{0xE10C0CC40981A2D0L,0x000C6E7FFB71D9B9L});
 16658  1
         public static final BitSet FOLLOW_explicitConstructorInvocation_in_constructorBody4163 = new BitSet(new long[]{0xE1040CC40981A2D0L,0x000C6E7FFB71D9B9L});
 16659  1
         public static final BitSet FOLLOW_blockStatement_in_constructorBody4166 = new BitSet(new long[]{0xE1040CC40981A2D0L,0x000C6E7FFB71D9B9L});
 16660  1
         public static final BitSet FOLLOW_114_in_constructorBody4169 = new BitSet(new long[]{0x0000000000000002L});
 16661  1
         public static final BitSet FOLLOW_nonWildcardTypeArguments_in_explicitConstructorInvocation4199 = new BitSet(new long[]{0x0000000000000000L,0x0000002400000000L});
 16662  1
         public static final BitSet FOLLOW_set_in_explicitConstructorInvocation4203 = new BitSet(new long[]{0x0000000400000000L});
 16663  1
         public static final BitSet FOLLOW_arguments_in_explicitConstructorInvocation4211 = new BitSet(new long[]{0x0004000000000000L});
 16664  1
         public static final BitSet FOLLOW_50_in_explicitConstructorInvocation4213 = new BitSet(new long[]{0x0000000000000002L});
 16665  1
         public static final BitSet FOLLOW_primary_in_explicitConstructorInvocation4223 = new BitSet(new long[]{0x0000200000000000L});
 16666  1
         public static final BitSet FOLLOW_45_in_explicitConstructorInvocation4225 = new BitSet(new long[]{0x0008000000000000L,0x0000000400000000L});
 16667  1
         public static final BitSet FOLLOW_nonWildcardTypeArguments_in_explicitConstructorInvocation4227 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
 16668  1
         public static final BitSet FOLLOW_98_in_explicitConstructorInvocation4230 = new BitSet(new long[]{0x0000000400000000L});
 16669  1
         public static final BitSet FOLLOW_arguments_in_explicitConstructorInvocation4232 = new BitSet(new long[]{0x0004000000000000L});
 16670  1
         public static final BitSet FOLLOW_50_in_explicitConstructorInvocation4234 = new BitSet(new long[]{0x0000000000000002L});
 16671  1
         public static final BitSet FOLLOW_Identifier_in_qualifiedName4254 = new BitSet(new long[]{0x0000200000000002L});
 16672  1
         public static final BitSet FOLLOW_45_in_qualifiedName4257 = new BitSet(new long[]{0x0000000000010000L});
 16673  1
         public static final BitSet FOLLOW_Identifier_in_qualifiedName4259 = new BitSet(new long[]{0x0000200000000002L});
 16674  1
         public static final BitSet FOLLOW_integerLiteral_in_literal4285 = new BitSet(new long[]{0x0000000000000002L});
 16675  1
         public static final BitSet FOLLOW_FloatingPointLiteral_in_literal4295 = new BitSet(new long[]{0x0000000000000002L});
 16676  1
         public static final BitSet FOLLOW_CharacterLiteral_in_literal4305 = new BitSet(new long[]{0x0000000000000002L});
 16677  1
         public static final BitSet FOLLOW_StringLiteral_in_literal4315 = new BitSet(new long[]{0x0000000000000002L});
 16678  1
         public static final BitSet FOLLOW_booleanLiteral_in_literal4325 = new BitSet(new long[]{0x0000000000000002L});
 16679  1
         public static final BitSet FOLLOW_89_in_literal4335 = new BitSet(new long[]{0x0000000000000002L});
 16680  1
         public static final BitSet FOLLOW_annotation_in_annotations4424 = new BitSet(new long[]{0x0100000000000002L});
 16681  1
         public static final BitSet FOLLOW_56_in_annotation4444 = new BitSet(new long[]{0x0000000000010000L});
 16682  1
         public static final BitSet FOLLOW_annotationName_in_annotation4448 = new BitSet(new long[]{0x0000000400000002L});
 16683  1
         public static final BitSet FOLLOW_34_in_annotation4470 = new BitSet(new long[]{0x41000CCC0981A0C0L,0x00084A2483504909L});
 16684  1
         public static final BitSet FOLLOW_elementValuePairs_in_annotation4474 = new BitSet(new long[]{0x0000000800000000L});
 16685  1
         public static final BitSet FOLLOW_elementValue_in_annotation4478 = new BitSet(new long[]{0x0000000800000000L});
 16686  1
         public static final BitSet FOLLOW_35_in_annotation4483 = new BitSet(new long[]{0x0000000000000002L});
 16687  1
         public static final BitSet FOLLOW_Identifier_in_annotationName4513 = new BitSet(new long[]{0x0000200000000002L});
 16688  1
         public static final BitSet FOLLOW_45_in_annotationName4516 = new BitSet(new long[]{0x0000000000010000L});
 16689  1
         public static final BitSet FOLLOW_Identifier_in_annotationName4518 = new BitSet(new long[]{0x0000200000000002L});
 16690  1
         public static final BitSet FOLLOW_elementValuePair_in_elementValuePairs4539 = new BitSet(new long[]{0x0000020000000002L});
 16691  1
         public static final BitSet FOLLOW_41_in_elementValuePairs4542 = new BitSet(new long[]{0x0000000000010000L});
 16692  1
         public static final BitSet FOLLOW_elementValuePair_in_elementValuePairs4544 = new BitSet(new long[]{0x0000020000000002L});
 16693  1
         public static final BitSet FOLLOW_Identifier_in_elementValuePair4565 = new BitSet(new long[]{0x0010000000000000L});
 16694  1
         public static final BitSet FOLLOW_52_in_elementValuePair4567 = new BitSet(new long[]{0x41000CC40981A0C0L,0x00084A2483504909L});
 16695  1
         public static final BitSet FOLLOW_elementValue_in_elementValuePair4569 = new BitSet(new long[]{0x0000000000000002L});
 16696  1
         public static final BitSet FOLLOW_conditionalExpression_in_elementValue4592 = new BitSet(new long[]{0x0000000000000002L});
 16697  1
         public static final BitSet FOLLOW_annotation_in_elementValue4602 = new BitSet(new long[]{0x0000000000000002L});
 16698  1
         public static final BitSet FOLLOW_elementValueArrayInitializer_in_elementValue4612 = new BitSet(new long[]{0x0000000000000002L});
 16699  1
         public static final BitSet FOLLOW_110_in_elementValueArrayInitializer4631 = new BitSet(new long[]{0x41000EC40981A0C0L,0x000C4A2483504909L});
 16700  1
         public static final BitSet FOLLOW_elementValue_in_elementValueArrayInitializer4634 = new BitSet(new long[]{0x0000020000000000L,0x0004000000000000L});
 16701  1
         public static final BitSet FOLLOW_41_in_elementValueArrayInitializer4637 = new BitSet(new long[]{0x41000CC40981A0C0L,0x00084A2483504909L});
 16702  1
         public static final BitSet FOLLOW_elementValue_in_elementValueArrayInitializer4639 = new BitSet(new long[]{0x0000020000000000L,0x0004000000000000L});
 16703  1
         public static final BitSet FOLLOW_41_in_elementValueArrayInitializer4646 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
 16704  1
         public static final BitSet FOLLOW_114_in_elementValueArrayInitializer4650 = new BitSet(new long[]{0x0000000000000002L});
 16705  1
         public static final BitSet FOLLOW_56_in_annotationTypeDeclaration4670 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
 16706  1
         public static final BitSet FOLLOW_85_in_annotationTypeDeclaration4672 = new BitSet(new long[]{0x0000000000010000L});
 16707  1
         public static final BitSet FOLLOW_Identifier_in_annotationTypeDeclaration4676 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16708  1
         public static final BitSet FOLLOW_annotationTypeBody_in_annotationTypeDeclaration4696 = new BitSet(new long[]{0x0000000000000002L});
 16709  1
         public static final BitSet FOLLOW_110_in_annotationTypeBody4724 = new BitSet(new long[]{0x6100000000010200L,0x00041113B8F05119L});
 16710  1
         public static final BitSet FOLLOW_annotationTypeElementDeclaration_in_annotationTypeBody4727 = new BitSet(new long[]{0x6100000000010200L,0x00041113B8F05119L});
 16711  1
         public static final BitSet FOLLOW_114_in_annotationTypeBody4731 = new BitSet(new long[]{0x0000000000000002L});
 16712  1
         public static final BitSet FOLLOW_modifiers_in_annotationTypeElementDeclaration4750 = new BitSet(new long[]{0x4100000000010200L,0x0000000080704119L});
 16713  1
         public static final BitSet FOLLOW_annotationTypeElementRest_in_annotationTypeElementDeclaration4752 = new BitSet(new long[]{0x0000000000000002L});
 16714  1
         public static final BitSet FOLLOW_type_in_annotationTypeElementRest4771 = new BitSet(new long[]{0x0000000000010000L});
 16715  1
         public static final BitSet FOLLOW_annotationMethodOrConstantRest_in_annotationTypeElementRest4773 = new BitSet(new long[]{0x0004000000000000L});
 16716  1
         public static final BitSet FOLLOW_50_in_annotationTypeElementRest4775 = new BitSet(new long[]{0x0000000000000002L});
 16717  1
         public static final BitSet FOLLOW_normalClassDeclaration_in_annotationTypeElementRest4785 = new BitSet(new long[]{0x0004000000000002L});
 16718  1
         public static final BitSet FOLLOW_50_in_annotationTypeElementRest4788 = new BitSet(new long[]{0x0000000000000002L});
 16719  1
         public static final BitSet FOLLOW_normalInterfaceDeclaration_in_annotationTypeElementRest4799 = new BitSet(new long[]{0x0004000000000002L});
 16720  1
         public static final BitSet FOLLOW_50_in_annotationTypeElementRest4802 = new BitSet(new long[]{0x0000000000000002L});
 16721  1
         public static final BitSet FOLLOW_enumDeclaration_in_annotationTypeElementRest4813 = new BitSet(new long[]{0x0004000000000002L});
 16722  1
         public static final BitSet FOLLOW_50_in_annotationTypeElementRest4816 = new BitSet(new long[]{0x0000000000000002L});
 16723  1
         public static final BitSet FOLLOW_annotationTypeDeclaration_in_annotationTypeElementRest4827 = new BitSet(new long[]{0x0004000000000002L});
 16724  1
         public static final BitSet FOLLOW_50_in_annotationTypeElementRest4830 = new BitSet(new long[]{0x0000000000000002L});
 16725  1
         public static final BitSet FOLLOW_annotationMethodRest_in_annotationMethodOrConstantRest4850 = new BitSet(new long[]{0x0000000000000002L});
 16726  1
         public static final BitSet FOLLOW_annotationConstantRest_in_annotationMethodOrConstantRest4860 = new BitSet(new long[]{0x0000000000000002L});
 16727  1
         public static final BitSet FOLLOW_Identifier_in_annotationMethodRest4883 = new BitSet(new long[]{0x0000000400000000L});
 16728  1
         public static final BitSet FOLLOW_34_in_annotationMethodRest4885 = new BitSet(new long[]{0x0000000800000000L});
 16729  1
         public static final BitSet FOLLOW_35_in_annotationMethodRest4887 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
 16730  1
         public static final BitSet FOLLOW_defaultValue_in_annotationMethodRest4890 = new BitSet(new long[]{0x0000000000000002L});
 16731  1
         public static final BitSet FOLLOW_variableDeclarators_in_annotationConstantRest4915 = new BitSet(new long[]{0x0000000000000002L});
 16732  1
         public static final BitSet FOLLOW_70_in_defaultValue4939 = new BitSet(new long[]{0x41000CC40981A0C0L,0x00084A2483504909L});
 16733  1
         public static final BitSet FOLLOW_elementValue_in_defaultValue4941 = new BitSet(new long[]{0x0000000000000002L});
 16734  1
         public static final BitSet FOLLOW_110_in_block4980 = new BitSet(new long[]{0xE1040CC40981A2D0L,0x000C6E7FFB71D9B9L});
 16735  1
         public static final BitSet FOLLOW_blockStatement_in_block4982 = new BitSet(new long[]{0xE1040CC40981A2D0L,0x000C6E7FFB71D9B9L});
 16736  1
         public static final BitSet FOLLOW_114_in_block4985 = new BitSet(new long[]{0x0000000000000002L});
 16737  1
         public static final BitSet FOLLOW_localVariableDeclarationStatement_in_blockStatement5018 = new BitSet(new long[]{0x0000000000000002L});
 16738  1
         public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_blockStatement5028 = new BitSet(new long[]{0x0000000000000002L});
 16739  1
         public static final BitSet FOLLOW_statement_in_blockStatement5038 = new BitSet(new long[]{0x0000000000000002L});
 16740  1
         public static final BitSet FOLLOW_localVariableDeclaration_in_localVariableDeclarationStatement5062 = new BitSet(new long[]{0x0004000000000000L});
 16741  1
         public static final BitSet FOLLOW_50_in_localVariableDeclarationStatement5064 = new BitSet(new long[]{0x0000000000000002L});
 16742  1
         public static final BitSet FOLLOW_variableModifiers_in_localVariableDeclaration5083 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16743  1
         public static final BitSet FOLLOW_type_in_localVariableDeclaration5087 = new BitSet(new long[]{0x0000000000010000L});
 16744  1
         public static final BitSet FOLLOW_variableDeclarators_in_localVariableDeclaration5101 = new BitSet(new long[]{0x0000000000000002L});
 16745  1
         public static final BitSet FOLLOW_variableModifier_in_variableModifiers5132 = new BitSet(new long[]{0x0100000000000002L,0x0000000000001000L});
 16746  1
         public static final BitSet FOLLOW_block_in_statement5154 = new BitSet(new long[]{0x0000000000000002L});
 16747  1
         public static final BitSet FOLLOW_ASSERT_in_statement5164 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16748  1
         public static final BitSet FOLLOW_expression_in_statement5166 = new BitSet(new long[]{0x0006000000000000L});
 16749  1
         public static final BitSet FOLLOW_49_in_statement5169 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16750  1
         public static final BitSet FOLLOW_expression_in_statement5171 = new BitSet(new long[]{0x0004000000000000L});
 16751  1
         public static final BitSet FOLLOW_50_in_statement5175 = new BitSet(new long[]{0x0000000000000002L});
 16752  1
         public static final BitSet FOLLOW_80_in_statement5185 = new BitSet(new long[]{0x0000000400000000L});
 16753  1
         public static final BitSet FOLLOW_parExpression_in_statement5187 = new BitSet(new long[]{0xC0040CC40981A0D0L,0x00086E7CC351C9A9L});
 16754  1
         public static final BitSet FOLLOW_statement_in_statement5189 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
 16755  1
         public static final BitSet FOLLOW_73_in_statement5199 = new BitSet(new long[]{0xC0040CC40981A0D0L,0x00086E7CC351C9A9L});
 16756  1
         public static final BitSet FOLLOW_statement_in_statement5201 = new BitSet(new long[]{0x0000000000000002L});
 16757  1
         public static final BitSet FOLLOW_79_in_statement5213 = new BitSet(new long[]{0x0000000400000000L});
 16758  1
         public static final BitSet FOLLOW_34_in_statement5215 = new BitSet(new long[]{0x41040CC40981A0C0L,0x00080A2483505909L});
 16759  1
         public static final BitSet FOLLOW_forControl_in_statement5217 = new BitSet(new long[]{0x0000000800000000L});
 16760  1
         public static final BitSet FOLLOW_35_in_statement5219 = new BitSet(new long[]{0xC0040CC40981A0D0L,0x00086E7CC351C9A9L});
 16761  1
         public static final BitSet FOLLOW_statement_in_statement5221 = new BitSet(new long[]{0x0000000000000002L});
 16762  1
         public static final BitSet FOLLOW_109_in_statement5231 = new BitSet(new long[]{0x0000000400000000L});
 16763  1
         public static final BitSet FOLLOW_parExpression_in_statement5233 = new BitSet(new long[]{0xC0040CC40981A0D0L,0x00086E7CC351C9A9L});
 16764  1
         public static final BitSet FOLLOW_statement_in_statement5235 = new BitSet(new long[]{0x0000000000000002L});
 16765  1
         public static final BitSet FOLLOW_71_in_statement5245 = new BitSet(new long[]{0xC0040CC40981A0D0L,0x00086E7CC351C9A9L});
 16766  1
         public static final BitSet FOLLOW_statement_in_statement5247 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
 16767  1
         public static final BitSet FOLLOW_109_in_statement5249 = new BitSet(new long[]{0x0000000400000000L});
 16768  1
         public static final BitSet FOLLOW_parExpression_in_statement5251 = new BitSet(new long[]{0x0004000000000000L});
 16769  1
         public static final BitSet FOLLOW_50_in_statement5253 = new BitSet(new long[]{0x0000000000000002L});
 16770  1
         public static final BitSet FOLLOW_106_in_statement5263 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16771  1
         public static final BitSet FOLLOW_block_in_statement5265 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002004L});
 16772  1
         public static final BitSet FOLLOW_catches_in_statement5277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
 16773  1
         public static final BitSet FOLLOW_77_in_statement5279 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16774  1
         public static final BitSet FOLLOW_block_in_statement5281 = new BitSet(new long[]{0x0000000000000002L});
 16775  1
         public static final BitSet FOLLOW_catches_in_statement5293 = new BitSet(new long[]{0x0000000000000002L});
 16776  1
         public static final BitSet FOLLOW_77_in_statement5307 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16777  1
         public static final BitSet FOLLOW_block_in_statement5309 = new BitSet(new long[]{0x0000000000000002L});
 16778  1
         public static final BitSet FOLLOW_99_in_statement5329 = new BitSet(new long[]{0x0000000400000000L});
 16779  1
         public static final BitSet FOLLOW_parExpression_in_statement5331 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16780  1
         public static final BitSet FOLLOW_110_in_statement5333 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000042L});
 16781  1
         public static final BitSet FOLLOW_switchBlockStatementGroups_in_statement5335 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
 16782  1
         public static final BitSet FOLLOW_114_in_statement5337 = new BitSet(new long[]{0x0000000000000002L});
 16783  1
         public static final BitSet FOLLOW_100_in_statement5347 = new BitSet(new long[]{0x0000000400000000L});
 16784  1
         public static final BitSet FOLLOW_parExpression_in_statement5349 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16785  1
         public static final BitSet FOLLOW_block_in_statement5351 = new BitSet(new long[]{0x0000000000000002L});
 16786  1
         public static final BitSet FOLLOW_94_in_statement5361 = new BitSet(new long[]{0x40040CC40981A0C0L,0x00080A2483504909L});
 16787  1
         public static final BitSet FOLLOW_expression_in_statement5363 = new BitSet(new long[]{0x0004000000000000L});
 16788  1
         public static final BitSet FOLLOW_50_in_statement5366 = new BitSet(new long[]{0x0000000000000002L});
 16789  1
         public static final BitSet FOLLOW_102_in_statement5376 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16790  1
         public static final BitSet FOLLOW_expression_in_statement5378 = new BitSet(new long[]{0x0004000000000000L});
 16791  1
         public static final BitSet FOLLOW_50_in_statement5380 = new BitSet(new long[]{0x0000000000000002L});
 16792  1
         public static final BitSet FOLLOW_63_in_statement5390 = new BitSet(new long[]{0x0004000000010000L});
 16793  1
         public static final BitSet FOLLOW_Identifier_in_statement5392 = new BitSet(new long[]{0x0004000000000000L});
 16794  1
         public static final BitSet FOLLOW_50_in_statement5395 = new BitSet(new long[]{0x0000000000000002L});
 16795  1
         public static final BitSet FOLLOW_69_in_statement5405 = new BitSet(new long[]{0x0004000000010000L});
 16796  1
         public static final BitSet FOLLOW_Identifier_in_statement5407 = new BitSet(new long[]{0x0004000000000000L});
 16797  1
         public static final BitSet FOLLOW_50_in_statement5410 = new BitSet(new long[]{0x0000000000000002L});
 16798  1
         public static final BitSet FOLLOW_50_in_statement5420 = new BitSet(new long[]{0x0000000000000002L});
 16799  1
         public static final BitSet FOLLOW_statementExpression_in_statement5431 = new BitSet(new long[]{0x0004000000000000L});
 16800  1
         public static final BitSet FOLLOW_50_in_statement5433 = new BitSet(new long[]{0x0000000000000002L});
 16801  1
         public static final BitSet FOLLOW_Identifier_in_statement5443 = new BitSet(new long[]{0x0002000000000000L});
 16802  1
         public static final BitSet FOLLOW_49_in_statement5445 = new BitSet(new long[]{0xC0040CC40981A0D0L,0x00086E7CC351C9A9L});
 16803  1
         public static final BitSet FOLLOW_statement_in_statement5447 = new BitSet(new long[]{0x0000000000000002L});
 16804  1
         public static final BitSet FOLLOW_catchClause_in_catches5470 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
 16805  1
         public static final BitSet FOLLOW_catchClause_in_catches5473 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000004L});
 16806  1
         public static final BitSet FOLLOW_66_in_catchClause5498 = new BitSet(new long[]{0x0000000400000000L});
 16807  1
         public static final BitSet FOLLOW_34_in_catchClause5500 = new BitSet(new long[]{0x4100000000010000L,0x0000000080505109L});
 16808  1
         public static final BitSet FOLLOW_formalParameter_in_catchClause5502 = new BitSet(new long[]{0x0000000800000000L});
 16809  1
         public static final BitSet FOLLOW_35_in_catchClause5504 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 16810  1
         public static final BitSet FOLLOW_block_in_catchClause5506 = new BitSet(new long[]{0x0000000000000002L});
 16811  1
         public static final BitSet FOLLOW_variableModifiers_in_formalParameter5525 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16812  1
         public static final BitSet FOLLOW_type_in_formalParameter5527 = new BitSet(new long[]{0x0000000000010000L});
 16813  1
         public static final BitSet FOLLOW_variableDeclaratorId_in_formalParameter5529 = new BitSet(new long[]{0x0000000000000002L});
 16814  1
         public static final BitSet FOLLOW_switchBlockStatementGroup_in_switchBlockStatementGroups5557 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000042L});
 16815  1
         public static final BitSet FOLLOW_switchLabel_in_switchBlockStatementGroup5584 = new BitSet(new long[]{0xE1040CC40981A2D2L,0x00086E7FFB71D9FBL});
 16816  1
         public static final BitSet FOLLOW_blockStatement_in_switchBlockStatementGroup5587 = new BitSet(new long[]{0xE1040CC40981A2D2L,0x00086E7FFB71D9B9L});
 16817  1
         public static final BitSet FOLLOW_65_in_switchLabel5611 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16818  1
         public static final BitSet FOLLOW_constantExpression_in_switchLabel5613 = new BitSet(new long[]{0x0002000000000000L});
 16819  1
         public static final BitSet FOLLOW_49_in_switchLabel5615 = new BitSet(new long[]{0x0000000000000002L});
 16820  1
         public static final BitSet FOLLOW_65_in_switchLabel5625 = new BitSet(new long[]{0x0000000000010000L});
 16821  1
         public static final BitSet FOLLOW_enumConstantName_in_switchLabel5627 = new BitSet(new long[]{0x0002000000000000L});
 16822  1
         public static final BitSet FOLLOW_49_in_switchLabel5629 = new BitSet(new long[]{0x0000000000000002L});
 16823  1
         public static final BitSet FOLLOW_70_in_switchLabel5639 = new BitSet(new long[]{0x0002000000000000L});
 16824  1
         public static final BitSet FOLLOW_49_in_switchLabel5641 = new BitSet(new long[]{0x0000000000000002L});
 16825  1
         public static final BitSet FOLLOW_enhancedForControl_in_forControl5672 = new BitSet(new long[]{0x0000000000000002L});
 16826  1
         public static final BitSet FOLLOW_forInit_in_forControl5682 = new BitSet(new long[]{0x0004000000000000L});
 16827  1
         public static final BitSet FOLLOW_50_in_forControl5685 = new BitSet(new long[]{0x40040CC40981A0C0L,0x00080A2483504909L});
 16828  1
         public static final BitSet FOLLOW_expression_in_forControl5687 = new BitSet(new long[]{0x0004000000000000L});
 16829  1
         public static final BitSet FOLLOW_50_in_forControl5690 = new BitSet(new long[]{0x40000CC40981A0C2L,0x00080A2483504909L});
 16830  1
         public static final BitSet FOLLOW_forUpdate_in_forControl5692 = new BitSet(new long[]{0x0000000000000002L});
 16831  1
         public static final BitSet FOLLOW_localVariableDeclaration_in_forInit5712 = new BitSet(new long[]{0x0000000000000002L});
 16832  1
         public static final BitSet FOLLOW_expressionList_in_forInit5722 = new BitSet(new long[]{0x0000000000000002L});
 16833  1
         public static final BitSet FOLLOW_variableModifiers_in_enhancedForControl5745 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16834  1
         public static final BitSet FOLLOW_type_in_enhancedForControl5747 = new BitSet(new long[]{0x0000000000010000L});
 16835  1
         public static final BitSet FOLLOW_Identifier_in_enhancedForControl5749 = new BitSet(new long[]{0x0002000000000000L});
 16836  1
         public static final BitSet FOLLOW_49_in_enhancedForControl5751 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16837  1
         public static final BitSet FOLLOW_expression_in_enhancedForControl5753 = new BitSet(new long[]{0x0000000000000002L});
 16838  1
         public static final BitSet FOLLOW_expressionList_in_forUpdate5772 = new BitSet(new long[]{0x0000000000000002L});
 16839  1
         public static final BitSet FOLLOW_34_in_parExpression5793 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16840  1
         public static final BitSet FOLLOW_expression_in_parExpression5795 = new BitSet(new long[]{0x0000000800000000L});
 16841  1
         public static final BitSet FOLLOW_35_in_parExpression5797 = new BitSet(new long[]{0x0000000000000002L});
 16842  1
         public static final BitSet FOLLOW_expression_in_expressionList5820 = new BitSet(new long[]{0x0000020000000002L});
 16843  1
         public static final BitSet FOLLOW_41_in_expressionList5823 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16844  1
         public static final BitSet FOLLOW_expression_in_expressionList5825 = new BitSet(new long[]{0x0000020000000002L});
 16845  1
         public static final BitSet FOLLOW_expression_in_statementExpression5846 = new BitSet(new long[]{0x0000000000000002L});
 16846  1
         public static final BitSet FOLLOW_expression_in_constantExpression5878 = new BitSet(new long[]{0x0000000000000002L});
 16847  1
         public static final BitSet FOLLOW_conditionalExpression_in_expression5901 = new BitSet(new long[]{0x1059112240000002L,0x0001000000000000L});
 16848  1
         public static final BitSet FOLLOW_assignmentOperator_in_expression5904 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16849  1
         public static final BitSet FOLLOW_expression_in_expression5906 = new BitSet(new long[]{0x0000000000000002L});
 16850  1
         public static final BitSet FOLLOW_52_in_assignmentOperator5931 = new BitSet(new long[]{0x0000000000000002L});
 16851  1
         public static final BitSet FOLLOW_40_in_assignmentOperator5941 = new BitSet(new long[]{0x0000000000000002L});
 16852  1
         public static final BitSet FOLLOW_44_in_assignmentOperator5951 = new BitSet(new long[]{0x0000000000000002L});
 16853  1
         public static final BitSet FOLLOW_37_in_assignmentOperator5961 = new BitSet(new long[]{0x0000000000000002L});
 16854  1
         public static final BitSet FOLLOW_48_in_assignmentOperator5971 = new BitSet(new long[]{0x0000000000000002L});
 16855  1
         public static final BitSet FOLLOW_33_in_assignmentOperator5981 = new BitSet(new long[]{0x0000000000000002L});
 16856  1
         public static final BitSet FOLLOW_112_in_assignmentOperator5991 = new BitSet(new long[]{0x0000000000000002L});
 16857  1
         public static final BitSet FOLLOW_60_in_assignmentOperator6001 = new BitSet(new long[]{0x0000000000000002L});
 16858  1
         public static final BitSet FOLLOW_30_in_assignmentOperator6011 = new BitSet(new long[]{0x0000000000000002L});
 16859  1
         public static final BitSet FOLLOW_51_in_assignmentOperator6032 = new BitSet(new long[]{0x0008000000000000L});
 16860  1
         public static final BitSet FOLLOW_51_in_assignmentOperator6036 = new BitSet(new long[]{0x0010000000000000L});
 16861  1
         public static final BitSet FOLLOW_52_in_assignmentOperator6040 = new BitSet(new long[]{0x0000000000000002L});
 16862  1
         public static final BitSet FOLLOW_54_in_assignmentOperator6074 = new BitSet(new long[]{0x0040000000000000L});
 16863  1
         public static final BitSet FOLLOW_54_in_assignmentOperator6078 = new BitSet(new long[]{0x0040000000000000L});
 16864  1
         public static final BitSet FOLLOW_54_in_assignmentOperator6082 = new BitSet(new long[]{0x0010000000000000L});
 16865  1
         public static final BitSet FOLLOW_52_in_assignmentOperator6086 = new BitSet(new long[]{0x0000000000000002L});
 16866  1
         public static final BitSet FOLLOW_54_in_assignmentOperator6117 = new BitSet(new long[]{0x0040000000000000L});
 16867  1
         public static final BitSet FOLLOW_54_in_assignmentOperator6121 = new BitSet(new long[]{0x0010000000000000L});
 16868  1
         public static final BitSet FOLLOW_52_in_assignmentOperator6125 = new BitSet(new long[]{0x0000000000000002L});
 16869  1
         public static final BitSet FOLLOW_conditionalOrExpression_in_conditionalExpression6154 = new BitSet(new long[]{0x0080000000000002L});
 16870  1
         public static final BitSet FOLLOW_55_in_conditionalExpression6158 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16871  1
         public static final BitSet FOLLOW_expression_in_conditionalExpression6160 = new BitSet(new long[]{0x0002000000000000L});
 16872  1
         public static final BitSet FOLLOW_49_in_conditionalExpression6162 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16873  1
         public static final BitSet FOLLOW_expression_in_conditionalExpression6164 = new BitSet(new long[]{0x0000000000000002L});
 16874  1
         public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression6186 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
 16875  1
         public static final BitSet FOLLOW_113_in_conditionalOrExpression6190 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16876  1
         public static final BitSet FOLLOW_conditionalAndExpression_in_conditionalOrExpression6192 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
 16877  1
         public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression6214 = new BitSet(new long[]{0x0000000080000002L});
 16878  1
         public static final BitSet FOLLOW_31_in_conditionalAndExpression6218 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16879  1
         public static final BitSet FOLLOW_inclusiveOrExpression_in_conditionalAndExpression6220 = new BitSet(new long[]{0x0000000080000002L});
 16880  1
         public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression6242 = new BitSet(new long[]{0x0000000000000002L,0x0000800000000000L});
 16881  1
         public static final BitSet FOLLOW_111_in_inclusiveOrExpression6246 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16882  1
         public static final BitSet FOLLOW_exclusiveOrExpression_in_inclusiveOrExpression6248 = new BitSet(new long[]{0x0000000000000002L,0x0000800000000000L});
 16883  1
         public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression6270 = new BitSet(new long[]{0x0800000000000002L});
 16884  1
         public static final BitSet FOLLOW_59_in_exclusiveOrExpression6274 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16885  1
         public static final BitSet FOLLOW_andExpression_in_exclusiveOrExpression6276 = new BitSet(new long[]{0x0800000000000002L});
 16886  1
         public static final BitSet FOLLOW_equalityExpression_in_andExpression6298 = new BitSet(new long[]{0x0000000100000002L});
 16887  1
         public static final BitSet FOLLOW_32_in_andExpression6302 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16888  1
         public static final BitSet FOLLOW_equalityExpression_in_andExpression6304 = new BitSet(new long[]{0x0000000100000002L});
 16889  1
         public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression6326 = new BitSet(new long[]{0x0020000010000002L});
 16890  1
         public static final BitSet FOLLOW_set_in_equalityExpression6330 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16891  1
         public static final BitSet FOLLOW_instanceOfExpression_in_equalityExpression6338 = new BitSet(new long[]{0x0020000010000002L});
 16892  1
         public static final BitSet FOLLOW_relationalExpression_in_instanceOfExpression6360 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
 16893  1
         public static final BitSet FOLLOW_83_in_instanceOfExpression6363 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16894  1
         public static final BitSet FOLLOW_type_in_instanceOfExpression6365 = new BitSet(new long[]{0x0000000000000002L});
 16895  1
         public static final BitSet FOLLOW_shiftExpression_in_relationalExpression6386 = new BitSet(new long[]{0x0048000000000002L});
 16896  1
         public static final BitSet FOLLOW_relationalOp_in_relationalExpression6390 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16897  1
         public static final BitSet FOLLOW_shiftExpression_in_relationalExpression6392 = new BitSet(new long[]{0x0048000000000002L});
 16898  1
         public static final BitSet FOLLOW_51_in_relationalOp6427 = new BitSet(new long[]{0x0010000000000000L});
 16899  1
         public static final BitSet FOLLOW_52_in_relationalOp6431 = new BitSet(new long[]{0x0000000000000002L});
 16900  1
         public static final BitSet FOLLOW_54_in_relationalOp6461 = new BitSet(new long[]{0x0010000000000000L});
 16901  1
         public static final BitSet FOLLOW_52_in_relationalOp6465 = new BitSet(new long[]{0x0000000000000002L});
 16902  1
         public static final BitSet FOLLOW_51_in_relationalOp6486 = new BitSet(new long[]{0x0000000000000002L});
 16903  1
         public static final BitSet FOLLOW_54_in_relationalOp6497 = new BitSet(new long[]{0x0000000000000002L});
 16904  1
         public static final BitSet FOLLOW_additiveExpression_in_shiftExpression6517 = new BitSet(new long[]{0x0048000000000002L});
 16905  1
         public static final BitSet FOLLOW_shiftOp_in_shiftExpression6521 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16906  1
         public static final BitSet FOLLOW_additiveExpression_in_shiftExpression6523 = new BitSet(new long[]{0x0048000000000002L});
 16907  1
         public static final BitSet FOLLOW_51_in_shiftOp6554 = new BitSet(new long[]{0x0008000000000000L});
 16908  1
         public static final BitSet FOLLOW_51_in_shiftOp6558 = new BitSet(new long[]{0x0000000000000002L});
 16909  1
         public static final BitSet FOLLOW_54_in_shiftOp6590 = new BitSet(new long[]{0x0040000000000000L});
 16910  1
         public static final BitSet FOLLOW_54_in_shiftOp6594 = new BitSet(new long[]{0x0040000000000000L});
 16911  1
         public static final BitSet FOLLOW_54_in_shiftOp6598 = new BitSet(new long[]{0x0000000000000002L});
 16912  1
         public static final BitSet FOLLOW_54_in_shiftOp6628 = new BitSet(new long[]{0x0040000000000000L});
 16913  1
         public static final BitSet FOLLOW_54_in_shiftOp6632 = new BitSet(new long[]{0x0000000000000002L});
 16914  1
         public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression6662 = new BitSet(new long[]{0x0000044000000002L});
 16915  1
         public static final BitSet FOLLOW_set_in_additiveExpression6666 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16916  1
         public static final BitSet FOLLOW_multiplicativeExpression_in_additiveExpression6674 = new BitSet(new long[]{0x0000044000000002L});
 16917  1
         public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression6696 = new BitSet(new long[]{0x0000801020000002L});
 16918  1
         public static final BitSet FOLLOW_set_in_multiplicativeExpression6700 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16919  1
         public static final BitSet FOLLOW_unaryExpression_in_multiplicativeExpression6714 = new BitSet(new long[]{0x0000801020000002L});
 16920  1
         public static final BitSet FOLLOW_38_in_unaryExpression6740 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16921  1
         public static final BitSet FOLLOW_unaryExpression_in_unaryExpression6742 = new BitSet(new long[]{0x0000000000000002L});
 16922  1
         public static final BitSet FOLLOW_42_in_unaryExpression6752 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16923  1
         public static final BitSet FOLLOW_unaryExpression_in_unaryExpression6754 = new BitSet(new long[]{0x0000000000000002L});
 16924  1
         public static final BitSet FOLLOW_39_in_unaryExpression6764 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16925  1
         public static final BitSet FOLLOW_unaryExpression_in_unaryExpression6766 = new BitSet(new long[]{0x0000000000000002L});
 16926  1
         public static final BitSet FOLLOW_43_in_unaryExpression6776 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16927  1
         public static final BitSet FOLLOW_unaryExpression_in_unaryExpression6778 = new BitSet(new long[]{0x0000000000000002L});
 16928  1
         public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_unaryExpression6788 = new BitSet(new long[]{0x0000000000000002L});
 16929  1
         public static final BitSet FOLLOW_115_in_unaryExpressionNotPlusMinus6807 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16930  1
         public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus6809 = new BitSet(new long[]{0x0000000000000002L});
 16931  1
         public static final BitSet FOLLOW_27_in_unaryExpressionNotPlusMinus6819 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16932  1
         public static final BitSet FOLLOW_unaryExpression_in_unaryExpressionNotPlusMinus6821 = new BitSet(new long[]{0x0000000000000002L});
 16933  1
         public static final BitSet FOLLOW_castExpression_in_unaryExpressionNotPlusMinus6831 = new BitSet(new long[]{0x0000000000000002L});
 16934  1
         public static final BitSet FOLLOW_primary_in_unaryExpressionNotPlusMinus6841 = new BitSet(new long[]{0x0200288000000002L});
 16935  1
         public static final BitSet FOLLOW_selector_in_unaryExpressionNotPlusMinus6843 = new BitSet(new long[]{0x0200288000000002L});
 16936  1
         public static final BitSet FOLLOW_34_in_castExpression6869 = new BitSet(new long[]{0x4000000000000000L,0x0000000080504109L});
 16937  1
         public static final BitSet FOLLOW_primitiveType_in_castExpression6871 = new BitSet(new long[]{0x0000000800000000L});
 16938  1
         public static final BitSet FOLLOW_35_in_castExpression6873 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16939  1
         public static final BitSet FOLLOW_unaryExpression_in_castExpression6875 = new BitSet(new long[]{0x0000000000000002L});
 16940  1
         public static final BitSet FOLLOW_34_in_castExpression6884 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16941  1
         public static final BitSet FOLLOW_type_in_castExpression6887 = new BitSet(new long[]{0x0000000800000000L});
 16942  1
         public static final BitSet FOLLOW_expression_in_castExpression6891 = new BitSet(new long[]{0x0000000800000000L});
 16943  1
         public static final BitSet FOLLOW_35_in_castExpression6894 = new BitSet(new long[]{0x400000040981A0C0L,0x00080A2483504909L});
 16944  1
         public static final BitSet FOLLOW_unaryExpressionNotPlusMinus_in_castExpression6896 = new BitSet(new long[]{0x0000000000000002L});
 16945  1
         public static final BitSet FOLLOW_parExpression_in_primary6923 = new BitSet(new long[]{0x0000000000000002L});
 16946  1
         public static final BitSet FOLLOW_101_in_primary6933 = new BitSet(new long[]{0x0200200400000002L});
 16947  1
         public static final BitSet FOLLOW_45_in_primary6936 = new BitSet(new long[]{0x0000000000010000L});
 16948  1
         public static final BitSet FOLLOW_Identifier_in_primary6940 = new BitSet(new long[]{0x0200200400000002L});
 16949  1
         public static final BitSet FOLLOW_identifierSuffix_in_primary6956 = new BitSet(new long[]{0x0000000000000002L});
 16950  1
         public static final BitSet FOLLOW_98_in_primary6981 = new BitSet(new long[]{0x0000200400000000L});
 16951  1
         public static final BitSet FOLLOW_superSuffix_in_primary6983 = new BitSet(new long[]{0x0000000000000002L});
 16952  1
         public static final BitSet FOLLOW_literal_in_primary7003 = new BitSet(new long[]{0x0000000000000002L});
 16953  1
         public static final BitSet FOLLOW_88_in_primary7013 = new BitSet(new long[]{0x4008000000010000L,0x0000000080504109L});
 16954  1
         public static final BitSet FOLLOW_creator_in_primary7015 = new BitSet(new long[]{0x0000000000000002L});
 16955  1
         public static final BitSet FOLLOW_Identifier_in_primary7027 = new BitSet(new long[]{0x0200200400000002L});
 16956  1
         public static final BitSet FOLLOW_45_in_primary7041 = new BitSet(new long[]{0x0000000000010000L});
 16957  1
         public static final BitSet FOLLOW_Identifier_in_primary7045 = new BitSet(new long[]{0x0200200400000002L});
 16958  1
         public static final BitSet FOLLOW_identifierSuffix_in_primary7061 = new BitSet(new long[]{0x0000000000000002L});
 16959  1
         public static final BitSet FOLLOW_primitiveType_in_primary7086 = new BitSet(new long[]{0x0200200000000000L});
 16960  1
         public static final BitSet FOLLOW_57_in_primary7089 = new BitSet(new long[]{0x0400000000000000L});
 16961  1
         public static final BitSet FOLLOW_58_in_primary7091 = new BitSet(new long[]{0x0200200000000000L});
 16962  1
         public static final BitSet FOLLOW_45_in_primary7095 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
 16963  1
         public static final BitSet FOLLOW_68_in_primary7097 = new BitSet(new long[]{0x0000000000000002L});
 16964  1
         public static final BitSet FOLLOW_107_in_primary7107 = new BitSet(new long[]{0x0000200000000000L});
 16965  1
         public static final BitSet FOLLOW_45_in_primary7109 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
 16966  1
         public static final BitSet FOLLOW_68_in_primary7111 = new BitSet(new long[]{0x0000000000000002L});
 16967  1
         public static final BitSet FOLLOW_57_in_identifierSuffix7131 = new BitSet(new long[]{0x0400000000000000L});
 16968  1
         public static final BitSet FOLLOW_58_in_identifierSuffix7133 = new BitSet(new long[]{0x0200200000000000L});
 16969  1
         public static final BitSet FOLLOW_45_in_identifierSuffix7137 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
 16970  1
         public static final BitSet FOLLOW_68_in_identifierSuffix7139 = new BitSet(new long[]{0x0000000000000002L});
 16971  1
         public static final BitSet FOLLOW_57_in_identifierSuffix7150 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 16972  1
         public static final BitSet FOLLOW_expression_in_identifierSuffix7152 = new BitSet(new long[]{0x0400000000000000L});
 16973  1
         public static final BitSet FOLLOW_58_in_identifierSuffix7154 = new BitSet(new long[]{0x0200000000000002L});
 16974  1
         public static final BitSet FOLLOW_arguments_in_identifierSuffix7167 = new BitSet(new long[]{0x0000000000000002L});
 16975  1
         public static final BitSet FOLLOW_45_in_identifierSuffix7177 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
 16976  1
         public static final BitSet FOLLOW_68_in_identifierSuffix7179 = new BitSet(new long[]{0x0000000000000002L});
 16977  1
         public static final BitSet FOLLOW_45_in_identifierSuffix7189 = new BitSet(new long[]{0x0008000000000000L});
 16978  1
         public static final BitSet FOLLOW_explicitGenericInvocation_in_identifierSuffix7191 = new BitSet(new long[]{0x0000000000000002L});
 16979  1
         public static final BitSet FOLLOW_45_in_identifierSuffix7201 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
 16980  1
         public static final BitSet FOLLOW_101_in_identifierSuffix7203 = new BitSet(new long[]{0x0000000000000002L});
 16981  1
         public static final BitSet FOLLOW_45_in_identifierSuffix7213 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
 16982  1
         public static final BitSet FOLLOW_98_in_identifierSuffix7215 = new BitSet(new long[]{0x0000000400000000L});
 16983  1
         public static final BitSet FOLLOW_arguments_in_identifierSuffix7217 = new BitSet(new long[]{0x0000000000000002L});
 16984  1
         public static final BitSet FOLLOW_45_in_identifierSuffix7227 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
 16985  1
         public static final BitSet FOLLOW_88_in_identifierSuffix7229 = new BitSet(new long[]{0x0008000000010000L});
 16986  1
         public static final BitSet FOLLOW_innerCreator_in_identifierSuffix7231 = new BitSet(new long[]{0x0000000000000002L});
 16987  1
         public static final BitSet FOLLOW_nonWildcardTypeArguments_in_creator7250 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 16988  1
         public static final BitSet FOLLOW_createdName_in_creator7254 = new BitSet(new long[]{0x0000000400000000L});
 16989  1
         public static final BitSet FOLLOW_classCreatorRest_in_creator7256 = new BitSet(new long[]{0x0000000000000002L});
 16990  1
         public static final BitSet FOLLOW_createdName_in_creator7269 = new BitSet(new long[]{0x0200000400000000L});
 16991  1
         public static final BitSet FOLLOW_arrayCreatorRest_in_creator7272 = new BitSet(new long[]{0x0000000000000002L});
 16992  1
         public static final BitSet FOLLOW_classCreatorRest_in_creator7276 = new BitSet(new long[]{0x0000000000000002L});
 16993  1
         public static final BitSet FOLLOW_classOrInterfaceType_in_createdName7297 = new BitSet(new long[]{0x0000000000000002L});
 16994  1
         public static final BitSet FOLLOW_primitiveType_in_createdName7307 = new BitSet(new long[]{0x0000000000000002L});
 16995  1
         public static final BitSet FOLLOW_nonWildcardTypeArguments_in_innerCreator7331 = new BitSet(new long[]{0x0000000000010000L});
 16996  1
         public static final BitSet FOLLOW_Identifier_in_innerCreator7337 = new BitSet(new long[]{0x0000000400000000L});
 16997  1
         public static final BitSet FOLLOW_classCreatorRest_in_innerCreator7339 = new BitSet(new long[]{0x0000000000000002L});
 16998  1
         public static final BitSet FOLLOW_57_in_arrayCreatorRest7359 = new BitSet(new long[]{0x44000CC40981A0C0L,0x00080A2483504909L});
 16999  1
         public static final BitSet FOLLOW_58_in_arrayCreatorRest7373 = new BitSet(new long[]{0x0200000000000000L,0x0000400000000000L});
 17000  1
         public static final BitSet FOLLOW_57_in_arrayCreatorRest7376 = new BitSet(new long[]{0x0400000000000000L});
 17001  1
         public static final BitSet FOLLOW_58_in_arrayCreatorRest7378 = new BitSet(new long[]{0x0200000000000000L,0x0000400000000000L});
 17002  1
         public static final BitSet FOLLOW_arrayInitializer_in_arrayCreatorRest7382 = new BitSet(new long[]{0x0000000000000002L});
 17003  1
         public static final BitSet FOLLOW_expression_in_arrayCreatorRest7396 = new BitSet(new long[]{0x0400000000000000L});
 17004  1
         public static final BitSet FOLLOW_58_in_arrayCreatorRest7398 = new BitSet(new long[]{0x0200000000000002L});
 17005  1
         public static final BitSet FOLLOW_57_in_arrayCreatorRest7401 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 17006  1
         public static final BitSet FOLLOW_expression_in_arrayCreatorRest7403 = new BitSet(new long[]{0x0400000000000000L});
 17007  1
         public static final BitSet FOLLOW_58_in_arrayCreatorRest7405 = new BitSet(new long[]{0x0200000000000002L});
 17008  1
         public static final BitSet FOLLOW_57_in_arrayCreatorRest7410 = new BitSet(new long[]{0x0400000000000000L});
 17009  1
         public static final BitSet FOLLOW_58_in_arrayCreatorRest7412 = new BitSet(new long[]{0x0200000000000002L});
 17010  1
         public static final BitSet FOLLOW_arguments_in_classCreatorRest7444 = new BitSet(new long[]{0x0000000000000002L,0x0000400000000000L});
 17011  1
         public static final BitSet FOLLOW_classBody_in_classCreatorRest7492 = new BitSet(new long[]{0x0000000000000002L});
 17012  1
         public static final BitSet FOLLOW_nonWildcardTypeArguments_in_explicitGenericInvocation7540 = new BitSet(new long[]{0x0000000000010000L});
 17013  1
         public static final BitSet FOLLOW_Identifier_in_explicitGenericInvocation7542 = new BitSet(new long[]{0x0000000400000000L});
 17014  1
         public static final BitSet FOLLOW_arguments_in_explicitGenericInvocation7544 = new BitSet(new long[]{0x0000000000000002L});
 17015  1
         public static final BitSet FOLLOW_51_in_nonWildcardTypeArguments7567 = new BitSet(new long[]{0x4000000000010000L,0x0000000080504109L});
 17016  1
         public static final BitSet FOLLOW_typeList_in_nonWildcardTypeArguments7569 = new BitSet(new long[]{0x0040000000000000L});
 17017  1
         public static final BitSet FOLLOW_54_in_nonWildcardTypeArguments7571 = new BitSet(new long[]{0x0000000000000002L});
 17018  1
         public static final BitSet FOLLOW_45_in_selector7594 = new BitSet(new long[]{0x0000000000010000L});
 17019  1
         public static final BitSet FOLLOW_Identifier_in_selector7596 = new BitSet(new long[]{0x0000000400000002L});
 17020  1
         public static final BitSet FOLLOW_arguments_in_selector7599 = new BitSet(new long[]{0x0000000000000002L});
 17021  1
         public static final BitSet FOLLOW_45_in_selector7611 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
 17022  1
         public static final BitSet FOLLOW_101_in_selector7613 = new BitSet(new long[]{0x0000000000000002L});
 17023  1
         public static final BitSet FOLLOW_45_in_selector7623 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
 17024  1
         public static final BitSet FOLLOW_98_in_selector7625 = new BitSet(new long[]{0x0000200400000000L});
 17025  1
         public static final BitSet FOLLOW_superSuffix_in_selector7627 = new BitSet(new long[]{0x0000000000000002L});
 17026  1
         public static final BitSet FOLLOW_45_in_selector7637 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
 17027  1
         public static final BitSet FOLLOW_88_in_selector7639 = new BitSet(new long[]{0x0008000000010000L});
 17028  1
         public static final BitSet FOLLOW_innerCreator_in_selector7641 = new BitSet(new long[]{0x0000000000000002L});
 17029  1
         public static final BitSet FOLLOW_57_in_selector7651 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 17030  1
         public static final BitSet FOLLOW_expression_in_selector7653 = new BitSet(new long[]{0x0400000000000000L});
 17031  1
         public static final BitSet FOLLOW_58_in_selector7655 = new BitSet(new long[]{0x0000000000000002L});
 17032  1
         public static final BitSet FOLLOW_arguments_in_superSuffix7678 = new BitSet(new long[]{0x0000000000000002L});
 17033  1
         public static final BitSet FOLLOW_45_in_superSuffix7688 = new BitSet(new long[]{0x0000000000010000L});
 17034  1
         public static final BitSet FOLLOW_Identifier_in_superSuffix7690 = new BitSet(new long[]{0x0000000400000002L});
 17035  1
         public static final BitSet FOLLOW_arguments_in_superSuffix7693 = new BitSet(new long[]{0x0000000000000002L});
 17036  1
         public static final BitSet FOLLOW_34_in_arguments7714 = new BitSet(new long[]{0x40000CCC0981A0C0L,0x00080A2483504909L});
 17037  1
         public static final BitSet FOLLOW_expressionList_in_arguments7716 = new BitSet(new long[]{0x0000000800000000L});
 17038  1
         public static final BitSet FOLLOW_35_in_arguments7719 = new BitSet(new long[]{0x0000000000000002L});
 17039  1
         public static final BitSet FOLLOW_56_in_synpred1_Java108 = new BitSet(new long[]{0x0000000000000002L});
 17040  1
         public static final BitSet FOLLOW_explicitConstructorInvocation_in_synpred114_Java4163 = new BitSet(new long[]{0x0000000000000002L});
 17041  1
         public static final BitSet FOLLOW_nonWildcardTypeArguments_in_synpred118_Java4199 = new BitSet(new long[]{0x0000000000000000L,0x0000002400000000L});
 17042  1
         public static final BitSet FOLLOW_set_in_synpred118_Java4203 = new BitSet(new long[]{0x0000000400000000L});
 17043  1
         public static final BitSet FOLLOW_arguments_in_synpred118_Java4211 = new BitSet(new long[]{0x0004000000000000L});
 17044  1
         public static final BitSet FOLLOW_50_in_synpred118_Java4213 = new BitSet(new long[]{0x0000000000000002L});
 17045  1
         public static final BitSet FOLLOW_annotation_in_synpred129_Java4424 = new BitSet(new long[]{0x0000000000000002L});
 17046  1
         public static final BitSet FOLLOW_localVariableDeclarationStatement_in_synpred152_Java5018 = new BitSet(new long[]{0x0000000000000002L});
 17047  1
         public static final BitSet FOLLOW_classOrInterfaceDeclaration_in_synpred153_Java5028 = new BitSet(new long[]{0x0000000000000002L});
 17048  1
         public static final BitSet FOLLOW_73_in_synpred158_Java5199 = new BitSet(new long[]{0xC0040CC40981A0D0L,0x00086E7CC351C9A9L});
 17049  1
         public static final BitSet FOLLOW_statement_in_synpred158_Java5201 = new BitSet(new long[]{0x0000000000000002L});
 17050  1
         public static final BitSet FOLLOW_catches_in_synpred163_Java5277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
 17051  1
         public static final BitSet FOLLOW_77_in_synpred163_Java5279 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
 17052  1
         public static final BitSet FOLLOW_block_in_synpred163_Java5281 = new BitSet(new long[]{0x0000000000000002L});
 17053  1
         public static final BitSet FOLLOW_catches_in_synpred164_Java5293 = new BitSet(new long[]{0x0000000000000002L});
 17054  1
         public static final BitSet FOLLOW_switchLabel_in_synpred179_Java5584 = new BitSet(new long[]{0x0000000000000002L});
 17055  1
         public static final BitSet FOLLOW_65_in_synpred181_Java5611 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 17056  1
         public static final BitSet FOLLOW_constantExpression_in_synpred181_Java5613 = new BitSet(new long[]{0x0002000000000000L});
 17057  1
         public static final BitSet FOLLOW_49_in_synpred181_Java5615 = new BitSet(new long[]{0x0000000000000002L});
 17058  1
         public static final BitSet FOLLOW_65_in_synpred182_Java5625 = new BitSet(new long[]{0x0000000000010000L});
 17059  1
         public static final BitSet FOLLOW_enumConstantName_in_synpred182_Java5627 = new BitSet(new long[]{0x0002000000000000L});
 17060  1
         public static final BitSet FOLLOW_49_in_synpred182_Java5629 = new BitSet(new long[]{0x0000000000000002L});
 17061  1
         public static final BitSet FOLLOW_enhancedForControl_in_synpred183_Java5672 = new BitSet(new long[]{0x0000000000000002L});
 17062  1
         public static final BitSet FOLLOW_localVariableDeclaration_in_synpred187_Java5712 = new BitSet(new long[]{0x0000000000000002L});
 17063  1
         public static final BitSet FOLLOW_assignmentOperator_in_synpred189_Java5904 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 17064  1
         public static final BitSet FOLLOW_expression_in_synpred189_Java5906 = new BitSet(new long[]{0x0000000000000002L});
 17065  1
         public static final BitSet FOLLOW_51_in_synpred199_Java6022 = new BitSet(new long[]{0x0008000000000000L});
 17066  1
         public static final BitSet FOLLOW_51_in_synpred199_Java6024 = new BitSet(new long[]{0x0010000000000000L});
 17067  1
         public static final BitSet FOLLOW_52_in_synpred199_Java6026 = new BitSet(new long[]{0x0000000000000002L});
 17068  1
         public static final BitSet FOLLOW_54_in_synpred200_Java6062 = new BitSet(new long[]{0x0040000000000000L});
 17069  1
         public static final BitSet FOLLOW_54_in_synpred200_Java6064 = new BitSet(new long[]{0x0040000000000000L});
 17070  1
         public static final BitSet FOLLOW_54_in_synpred200_Java6066 = new BitSet(new long[]{0x0010000000000000L});
 17071  1
         public static final BitSet FOLLOW_52_in_synpred200_Java6068 = new BitSet(new long[]{0x0000000000000002L});
 17072  1
         public static final BitSet FOLLOW_54_in_synpred201_Java6107 = new BitSet(new long[]{0x0040000000000000L});
 17073  1
         public static final BitSet FOLLOW_54_in_synpred201_Java6109 = new BitSet(new long[]{0x0010000000000000L});
 17074  1
         public static final BitSet FOLLOW_52_in_synpred201_Java6111 = new BitSet(new long[]{0x0000000000000002L});
 17075  1
         public static final BitSet FOLLOW_51_in_synpred212_Java6419 = new BitSet(new long[]{0x0010000000000000L});
 17076  1
         public static final BitSet FOLLOW_52_in_synpred212_Java6421 = new BitSet(new long[]{0x0000000000000002L});
 17077  1
         public static final BitSet FOLLOW_54_in_synpred213_Java6453 = new BitSet(new long[]{0x0010000000000000L});
 17078  1
         public static final BitSet FOLLOW_52_in_synpred213_Java6455 = new BitSet(new long[]{0x0000000000000002L});
 17079  1
         public static final BitSet FOLLOW_shiftOp_in_synpred215_Java6521 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 17080  1
         public static final BitSet FOLLOW_additiveExpression_in_synpred215_Java6523 = new BitSet(new long[]{0x0000000000000002L});
 17081  1
         public static final BitSet FOLLOW_51_in_synpred216_Java6546 = new BitSet(new long[]{0x0008000000000000L});
 17082  1
         public static final BitSet FOLLOW_51_in_synpred216_Java6548 = new BitSet(new long[]{0x0000000000000002L});
 17083  1
         public static final BitSet FOLLOW_54_in_synpred217_Java6580 = new BitSet(new long[]{0x0040000000000000L});
 17084  1
         public static final BitSet FOLLOW_54_in_synpred217_Java6582 = new BitSet(new long[]{0x0040000000000000L});
 17085  1
         public static final BitSet FOLLOW_54_in_synpred217_Java6584 = new BitSet(new long[]{0x0000000000000002L});
 17086  1
         public static final BitSet FOLLOW_54_in_synpred218_Java6620 = new BitSet(new long[]{0x0040000000000000L});
 17087  1
         public static final BitSet FOLLOW_54_in_synpred218_Java6622 = new BitSet(new long[]{0x0000000000000002L});
 17088  1
         public static final BitSet FOLLOW_castExpression_in_synpred230_Java6831 = new BitSet(new long[]{0x0000000000000002L});
 17089  1
         public static final BitSet FOLLOW_34_in_synpred234_Java6869 = new BitSet(new long[]{0x4000000000000000L,0x0000000080504109L});
 17090  1
         public static final BitSet FOLLOW_primitiveType_in_synpred234_Java6871 = new BitSet(new long[]{0x0000000800000000L});
 17091  1
         public static final BitSet FOLLOW_35_in_synpred234_Java6873 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 17092  1
         public static final BitSet FOLLOW_unaryExpression_in_synpred234_Java6875 = new BitSet(new long[]{0x0000000000000002L});
 17093  1
         public static final BitSet FOLLOW_type_in_synpred235_Java6887 = new BitSet(new long[]{0x0000000000000002L});
 17094  1
         public static final BitSet FOLLOW_45_in_synpred237_Java6936 = new BitSet(new long[]{0x0000000000010000L});
 17095  1
         public static final BitSet FOLLOW_Identifier_in_synpred237_Java6940 = new BitSet(new long[]{0x0000000000000002L});
 17096  1
         public static final BitSet FOLLOW_identifierSuffix_in_synpred238_Java6956 = new BitSet(new long[]{0x0000000000000002L});
 17097  1
         public static final BitSet FOLLOW_45_in_synpred243_Java7041 = new BitSet(new long[]{0x0000000000010000L});
 17098  1
         public static final BitSet FOLLOW_Identifier_in_synpred243_Java7045 = new BitSet(new long[]{0x0000000000000002L});
 17099  1
         public static final BitSet FOLLOW_identifierSuffix_in_synpred244_Java7061 = new BitSet(new long[]{0x0000000000000002L});
 17100  1
         public static final BitSet FOLLOW_57_in_synpred250_Java7150 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 17101  1
         public static final BitSet FOLLOW_expression_in_synpred250_Java7152 = new BitSet(new long[]{0x0400000000000000L});
 17102  1
         public static final BitSet FOLLOW_58_in_synpred250_Java7154 = new BitSet(new long[]{0x0000000000000002L});
 17103  1
         public static final BitSet FOLLOW_57_in_synpred263_Java7401 = new BitSet(new long[]{0x40000CC40981A0C0L,0x00080A2483504909L});
 17104  1
         public static final BitSet FOLLOW_expression_in_synpred263_Java7403 = new BitSet(new long[]{0x0400000000000000L});
 17105  1
         public static final BitSet FOLLOW_58_in_synpred263_Java7405 = new BitSet(new long[]{0x0000000000000002L});
 17106  
 }